我正在对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,但结果是一样的。有什么帮助吗?
Jyo de Lys 已发现问题。问题描述在这里,解决方案在这里。我做了以下工作来使其正常工作:
如果您在使用 urllib2 时遇到此错误,您还需要升级到 python 2.7.9 或更高版本。
对于那些正在使用 python 3.9 并面临这个问题的人“SSL: SSLV3_ALERT_HANDSHAKE_FAILURE]” 在获取证书或获取特定网址的到期日期时
因此您必须按照以下步骤操作才能从网址获得有效响应
使用下面的代码
servers 是 url 列表 ports 也是所有端口的列表
for i in range(0,len(servers)):
try:
s = servers[i]
port = ports[i]
print("querying {}".format(s))
q = Popen(["C:\\Program Files\\OpenSSL-Win64\\bin\\openssl.exe", "s_client", "-connect","{}:{}".format(s,port),"-servername",s,"-showcerts" ], stdout=PIPE, stdin=PIPE, shell=False)
y = check_output(["C:\\Program Files\\OpenSSL-Win64\\bin\\openssl.exe", "x509", "-noout", "-dates"], stdin=q.stdout)
print(y.decode("utf-8"))
except Exception as e:
print(e)