我正在尝试使用请求通过https进行连接。我已经尝试在线建议生成我自己的证书,并通过我自己的ca包没有成功。我得到的错误是:
SSLError:HTTPSConnectionPool(host ='app.company.com',port = 443):使用url:/ v1 / auth / login超出最大重试次数(由SSLError引起(SSLError(“错误握手:错误([(' SSL例程','ssl3_get_server_certificate','证书验证失败')],)“,),))
我正在使用Python 3.6.3 :: Anaconda,Inc。
我认为生成我自己的证书是错误的路径,因为我发现curl有同样的问题。但是,我有一个版本的curl工作但不是另一个版本,区别在于 - 工作版本是这个 - 这是iOS打包的版本(/ usr / bin / curl):
curl 7.54.0(x86_64-apple-darwin16.0)libcurl / 7.54.0 SecureTransport zlib / 1.2.8 协议:dict文件ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 功能:AsynchDNS IPv6大文件GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
非工作版本(来自anaconda):
curl 7.55.1(x86_64-apple-darwin13.4.0)libcurl / 7.55.1 OpenSSL / 1.0.2l zlib / 1.2.11 libssh2 / 1.8.0 发布日期:2017-08-14 协议:dict文件ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 功能:AsynchDNS IPv6大文件NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS代理
所以关键问题似乎是SecureTransport vs. OpenSSL。当然,我不知道为什么但是有没有办法让python请求使用SecureTransport?我想明白为什么但是现在我会解决它的工作!
(并且一个侧面问题是为什么不同版本的curl的SSL库的不同。是否可以使curl 7.55.1使用SecureTransport)
提前致谢。
答案 0 :(得分:1)
我有同样的问题在这篇文章中描述。 SSL error with Python requests despite up-to-date dependencies
修复只是将所有证书连接到一个文件中,并将其粘贴在Nginx证书目录中。