gpt4 book ai didi

Python 请求获取 TLSV1_ALERT_INTERNAL_ERROR

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:46 27 4
gpt4 key购买 nike

我正在尝试使用需要使用客户端证书的请求连接到网站。

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 有关。

我正在使用 requests 2.7.0 版,并且我还安装了 requests[security]点卡住:

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 alert internal error (_ssl.c:600)。这是在带有 Python 3.4.3 的 Windows 7 上。不幸的是,这是在一台内部机器上,所以我被 Windows 困住了,我们的 PyPi 内部镜像没有所有的最新版本。在我看来,这与 ssl 失败有关,不一定与 requests 有关。

Google 不会回馈有希望的结果。有 this描述相同问题的 StackOverflow 帖子,但提供的解决方案(使用自定义适配器)对我不起作用。

希望其他人以前遇到过这个问题,可以给我一些解决方法的提示。请和谢谢。

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

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

那么那个数据包的握手协议(protocol)段就是

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

后跟受支持的密码套件列表等。我查看了我的客户端发送的密码套件列表,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 已列出。服务器确认此消息,然后发送警报数据包。

最佳答案

我通过从 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'

帮我解决了这个问题。

关于Python 请求获取 TLSV1_ALERT_INTERNAL_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32910093/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com