SSLError:sslv3 警报握手失败

问题描述 投票:0回答:2

我正在对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,但结果是一样的。有什么帮助吗?

python ssl openssl branch.io
2个回答
41
投票

Jyo de Lys 已发现问题。问题描述在这里,解决方案在这里。我做了以下工作来使其正常工作:

  1. easy_install pyOpenSSL
  2. easy_install ndg-httpsclient
  3. easy_install pyasn1

如果您在使用 urllib2 时遇到此错误,您还需要升级到 python 2.7.9 或更高版本。


0
投票

对于那些正在使用 python 3.9 并面临这个问题的人“SSL: SSLV3_ALERT_HANDSHAKE_FAILURE]” 在获取证书或获取特定网址的到期日期时

因此您必须按照以下步骤操作才能从网址获得有效响应

  1. 在Windows中安装openssl
  2. 现在复制C盘正在安装的openssl的文件夹路径

使用下面的代码

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) 
© www.soinside.com 2019 - 2024. All rights reserved.