【发布时间】:2016-05-26 02:39:37
【问题描述】:
我正在对 branch.io 进行以下调用
import requests
req = requests.get('https://bnc.lt/m/H3XKyKB3Tq', verify=False)
它在我的本地机器上运行良好,但在服务器上却失败了。
SSLError: [Errno 1] _ssl.c:504: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Openssl 版本:
本地:OpenSSL 0.9.8zg 2015 年 7 月 14 日
服务器:OpenSSL 0.9.8e-fips-rhel5 2008 年 7 月 1 日
Python:
本地:2.7.10 服务器:2.7.6
分支 io 服务器连接:
Chrome 已验证 DigiCert SHA2 Secure Server CA 颁发了此网站的证书。服务器未提供任何证书透明度信息。
我尝试了 urllib2,但结果是一样的。有什么帮助吗?
【问题讨论】:
-
你至少需要 OpenSSL 0.9.8o 来处理 sha256 证书,所以你的服务器版本太旧了。
-
我在 2013 年 2 月 11 日尝试了 OpenSSL 1.0.1e-fips。它给了我同样的错误。
-
您的 PHP 是否使用该版本的 OpenSSL?有关如何检查的详细信息,请参见此处:stackoverflow.com/questions/18752409/…
-
它使用 OpenSSL 1.0.0-fips 2010 年 3 月 29 日
-
这也可能是一个 SNI 问题,因为
openssl s_client -connect bnc.lt:443不起作用,而openssl s_client -connect bnc.lt:443 -servername bnc.lt运行良好。我会说 SHA2 签名证书和 SNI 都可能导致问题,但解决方法是相同的:更新 OpenSSL
标签: python ssl openssl branch.io