私は以下のようなコードを持っています:
headers = {'content-type': 'ContentType.APPLICATION_XML'}
uri = "www.client.url.com/hit-here/"
clientCert = "path/to/cert/abc.crt"
clientKey = "path/to/key/abc.key"
PROTOCOL = ssl.PROTOCOL_TLSv1
context = ssl.SSLContext(PROTOCOL)
context.load_default_certs()
context.load_cert_chain(clientCert, clientKey)
conn = httplib.HTTPSConnection(uri, some_port, context=context)
私は実際にはネットワークプログラマーではないので、ハンドシェイク接続についてグーグルで調べたところssl.SSLContext(PROTOCOL)
、必要な機能としてコードが正常に機能することがわかりました。
私のローカルにはバージョン 2.7.10 がありますが、すべての製品ボックスには 2.7.3 が含まれているため、SSLContext
サポートされておらず、python バージョンのアップグレードはオプションではありません。
ssl — ソケット オブジェクトの SSL ラッパーを読んでみましたが、意味がわかりませんでした。
私が試したこと(無駄に):
s_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(s_, keyfile=clientKey, certfile=clientCert, cert_reqs=ssl.CERT_REQUIRED)
new_conn = s.connect((uri, some_port))
しかし、戻ります:
SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)')
質問- 安全な https 接続を確立するために、古いバージョンで SSL コンテキストを生成する方法を教えてください。