背景:
我试图创建一个与外部供应商握手的SSL上下文连接,然后通过该连接使用xml进行通信。
clientCert = path["cert_path"]
clientKey = path["key_path"]
PROTOCOL = ssl.PROTOCOL_TLSv1
context = ssl.SSLContext(PROTOCOL)
context.load_default_certs()
context.load_cert_chain(clientCert, clientKey)
conn = httplib.HTTPSConnection(uri, 443, context=context)
conn.request("POST", '/', headers=headers, body=signedRequest) # code breaks here
response = conn.getresponse()
但这段代码中断了,它说:
SSLError(1, u'[SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:590)
现在,我知道CA证书被正确地放置在服务器上,路径在某个地方变得混乱。
问题
我怎么知道这个ssl
和openssl
从中选择CA证书的CA路径是什么。
Openssl似乎建立了正确的连接,因此我需要在这里显式地提供ssl的路径。
requests.utils
路径如下所示,查找与context.load_default_certs()
类似的内容
In [1]: from requests.utils import DEFAULT_CA_BUNDLE_PATH
In [2]: print(DEFAULT_CA_BUNDLE_PATH)
/usr/local/python/path/site-packages/certifi/cacert.pem
好吧…找到了:
命令应该是
openssl version -a
输出中会有一个值
OPENSSLDIR
,这是基路径在大多数情况下,这是一个符号链接,使用
ls -la
到这个OPENSSLDIR
路径进一步
ls -la
你得到了实际路径:
相关问题 更多 >
编程相关推荐