背景:私のopensslとsslのデフォルトのCA Certsパスは何ですか?
私は握手のために、外部ベンダーとの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証明書が正しくパスが台無しになっているどこか、サーバー上に置かれていることを知っています。
質問
にはどうすればいいからCAサートを選ぶopenssl
からこのssl
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