加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python请求获得TLSV1_ALERT_INTERNAL_ERROR

发布时间:2020-12-20 13:07:39 所属栏目:Python 来源:网络整理
导读:我正在尝试连接到需要使用客户端证书的请求的网站. import requestsr = requests.get(url,cert='path to cert')print(r.status_code) 这适用于使用相同客户端证书的一个站点.该服务器正在使用TLS_RSA_WITH_AES_128_CBC_SHA,TLS 1.0.但是,我的目标站点使用TLS
我正在尝试连接到需要使用客户端证书的请求的网站.

import requests
r = requests.get(url,cert='path to cert')
print(r.status_code)

这适用于使用相同客户端证书的一个站点.该服务器正在使用TLS_RSA_WITH_AES_128_CBC_SHA,TLS 1.0.但是,我的目标站点使用TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS 1.1.所以基本上差异是TLS 1工作而TLS 1.1没有.一切都在浏览器中工作正常,所以它必须与Python的SSL有关.

我正在使用请求版本2.7.0,我也安装了请求[安全]. pip冻结:

cffi==0.9.2
cryptography==0.8.1
ndg-httpsclient==0.3.3
pyasn1==0.1.7
pycparser==2.10
pyOpenSSL==0.15.1
requests==2.7.0
six==1.9.0

我得到的具体错误是requests.exceptions.SSLError:[SSL:TLSV1_ALERT_INTERNAL_ERROR] tlsv1警告内部错误(_ssl.c:600).这是在Windows 7上使用Python 3.4.3.不幸的是,这是在内部机器上,所以我坚持使用Windows,而我们的PyPi内部镜像没有最新版本的所有东西.在我看来,这与ssl失败有关,而不一定是请求.

谷歌没有给出有希望的结果.有this StackOverflow帖子描述了同样的问题,但提供的解决方案(使用自定义适配器)对我不起作用.

希望其他人之前遇到过这种情况并且可以给我一些如何解决它的提示.拜托,谢谢.

编辑:我做了一个wireshark捕获的交互.发回的SSL警报是“级别:致命(2)描述:内部错误(80)”. TCP连接启动后,我的机器发送客户端问候.

Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 512

然后该数据包的握手协议段是

Handshake Type: Client Hello (1)
Length: 508
Version: TLS 1.2 (0x0301)

然后是支持的密码套件列表等.我查看了我的客户端发送的密码套件列表,并列出了TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA.服务器确认此消息然后发送Alert数据包.

解决方法

我通过从requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS删除第一个条目ECDH AESGCM来删除相同的SSLError,服务器似乎遇到了问题.这条线

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:!eNULL:!MD5'

为我解决了这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读