我在一台使用Windows8.1的新机器上使用Python2.7.12连接到{}时出错。错误是在下面代码的ssl_sock.connect行的SSL: CERTIFICATE_VERIFY_FAILED。代码在上下文中包装SSL连接,并指定我不想执行证书验证:ssl._create_default_https_context = ssl._create_unverified_context
s_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_NONE
context.check_hostname = True
context.load_default_certs()
ssl_sock = context.wrap_socket(s_, server_hostname=myurl)
ssl_sock.connect((myurl, int(myportno)))
我尝试将我试图连接的服务器上的安全证书的纯文本版本添加到Python引用的默认证书文件中,但这并不起作用(在任何情况下,我需要这样做是没有意义的)
当我浏览到要连接的域时,浏览器也不信任远程服务器证书,但是我已经检查了绑定到域的证书,并且验证良好。是什么导致了这种不信任?(我目前正在调查从我得到错误的计算机上删除一个Windows安全修补程序,看看这是否是原因)
(此问题在使用相同代码的其他计算机上也发生过,但在Windows检索到完整的更新集后,它似乎已解决。问题持续存在的机器也有一整套更新)