【问题标题】:How can I save the SSL keys for https when I use `urllib2`?当我使用 `urllib2` 时,如何保存 https 的 SSL 密钥?
【发布时间】:2019-10-30 03:19:24
【问题描述】:

我需要将 SSL 密钥保存在一个文件中,以便稍后通过 Wireshark 解密 TCP 数据包。 我该怎么办?

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import urllib2
import json

data={}
data_json = json.dumps(data, encoding='UTF-8', ensure_ascii=False)
requrl = "https://52.31.41.56/test"   # look, the protocol is https
req = urllib2.Request(url=requrl, data=data_json)
req.add_header('Content-Type', 'application/json')
# how can I record the SSL keys in a file, for Wireshark decryption
rsp_fp = urllib2.urlopen(req)
rsp_data = rsp_fp.read()
print(rsp_data)

【问题讨论】:

    标签: python-2.7 ssl urllib2 wireshark


    【解决方案1】:

    使用 sslkeylogfile

    示例用法

    使用sslkeylog,它同时兼容 Python2 和 Python3。我正在修改您的代码以在连接到 Stack Overflow 时保存 SSL 密钥日志。

    import urllib2
    import sslkeylog
    
    # Save SSL keys to "sslkeylog.txt" in this directory
    # Note that you only have to do this once while this is in scope
    sslkeylog.set_keylog("sslkeylog.txt")
    # Make an HTTPS connection to Stack Overflow
    requrl = "https://stackoverflow.com" 
    req = urllib2.Request(url=requrl)
    rsp_fp = urllib2.urlopen(req)
    

    验证

    然后如果我们检查 sslkeylog.txt,我们可以看到现在有一​​个条目:

    bash$ cat sslkeylogfile.txt
    CLIENT_RANDOM a655a2e200ddc96c1571fe29af1962013ccbab1b9e9b865db112a9c1492c449a 3280c9fbee32df623074f80519f278420971aaa6eb91ab0f1f973d505a03ddbcc4fba2ca83f6d733addebdb0358e606d
    

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 2017-03-13
      • 2019-02-25
      相关资源
      最近更新 更多