python - 如何使用 .cer 文件作为 python 请求的一部分

标签 python python-requests

假设我有一个名为 symantec-class3.cer 的 cer 文件,这就是我正在尝试的:

headers = {"content-type": "application/json"}
api_url = "https://www.someurl.com/search"
pprint.pprint(requests.post(api_url, auth=HTTPBasicAuth(username, password), verify="symantec-class3.cer", data=json.dumps(payload), headers=headers).json())

这是不喜欢它并吐出以下错误:

requests.exceptions.SSLError: [Errno 0] _ssl.c:344: error:00000000:lib(0):func(0):reason(0)

如果我将 verify 设为 False,它会正常工作,但我正在尝试使用本地目录中的证书文件。

最佳答案

Python 需要 PEM 格式的证书。

因此您应该使用 openssl x509 命令从 X509 证书中提取公钥组件。

.cer 扩展名通常表示二进制 DER 格式,因此此命令应以 pycrypto 可以使用的形式提取公钥:

openssl x509 -inform der -pubkey -noout -in you.cer >public_key.pem

关于python - 如何使用 .cer 文件作为 python 请求的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33019340/

相关文章:

python - 从链接列表加载图形需要大量时间和内存

python - numpy.all 与对象数据类型的奇怪行为

python - 我无法在 Python (PyCharm) 中输入字母 "&"它用空格替换它 {BUG}

Python 请求无法解码文本

python - 安装适用于 Python 的 GDAL

python - 如何将一条推文输入分类器模型?

Python 通过请求更改 Instagram 个人资料图片

python - 如何使用 python 请求从网页获取授权 token ”

python - urlopen/requests.get 在导入模块中创建的线程中不起作用

更新嵌套 JSON 的 Python PUT 请求失败