我有如下代碼:SSL上下文
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)
我不是一個真正的網絡程序員,所以我做了一些google搜索握手連接,發現ssl.SSLContext(PROTOCOL)
爲需要的功能,代碼工作正常。
然後我碰到了障礙,我的本地版本是2.7.10,但是所有的生產盒都有2.7.3,所以SSLContext
不支持,升級python版本不是控制選項。
我試過讀ssl — SSL wrapper for socket objects,但沒有意義。
是我的嘗試(白白):
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)')
問題 - 如何生成對舊版本的SSL上下文,以便有一個安全的HTTPS連接?
我不認爲舊版本可以使用上下文。您是否嘗試創建指定證書的https連接,即conn = httplib.HTTPSConnection(host,port,key_file,cert_file,strict,timeout) –