如何将.cer文件用作python请求的一部分

时间:2015-10-08 14:56:57

标签: 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)

如果我将验证设置为False,它可以正常工作,但我尝试在我的本地目录中使用cert文件。

1 个答案:

答案 0 :(得分:0)

Python需要PEM格式的证书。

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

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

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