Python Requests访问证书异常站点遇[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE]错误的解决求助
Python Requests访问证书异常站点遇[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE]错误的解决求助
我现在碰到一个棘手的问题:需要从一个存在证书问题的URL获取数据,用curl -k(跳过证书验证)能正常拿到数据,但用Python的requests库即使加上verify=False参数,还是会抛出[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE]错误,有没有大佬知道怎么解决这个问题?
我使用的环境是Python 3.10.12 + requests 2.32.3,以下是我用来测试的代码:
import os import requests # 直接用curl请求失败 teste = os.system("curl -o capabilities.xml 'https://geoserver.car.gov.br/geoserver/ows?service=WMS&version=1.3.0&request=GetCapabilities'") # 加上-k跳过证书验证后,curl请求成功 teste = os.system("curl -k -o capabilities.xml 'https://geoserver.car.gov.br/geoserver/ows?service=WMS&version=1.3.0&request=GetCapabilities'") # 尝试用Python Requests请求 url = "https://geoserver.car.gov.br/geoserver/ows" params = { 'service':'WMS', 'version':'1.3.0', 'request':'GetCapabilities' } # 直接请求,抛出证书错误 teste = requests.get(url, params) # 加上verify=False还是失败 teste = requests.get(url, params, verify=False)
更新:
经过排查,发现这个站点仅支持TLS 1.2加密套件,看起来Python Requests默认不兼容这个配置,有没有办法让Python强制使用TLS 1.2来建立连接呢?

备注:内容来源于stack exchange,提问作者Daniel




