当前位置: 首页 > 面试题库 >

请求无法连接到TLS服务器

薛英卫
2023-03-14
问题内容

我在跟踪为什么requests无法连接到特定主机时遇到问题。

通过curl或浏览器,以下命令可以正常工作:

curl https://banking4.anz.com

但是,如果我使用请求:

requests.get('https://banking4.anz.com')

我得到:

SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",)

在网络上,我仅看到客户端问好,服务器立即断开连接,因此似乎没有任何ssl或密码不兼容。(我希望这些都是SSL层错误)在这种情况下还有什么其他问题?

我在python 3.6.1上,请求2.14.2(带有安全性额外功能)。


问题答案:

该服务器以多种方式损坏。

一方面,它仅理解DES-
CBC3-SHA
,它被认为是不安全的,不包含在request使用的默认密码集中。此外,看起来它仅检查ClientHello中有限数量的提供的密码,因此,如果在此密码之前有太多其他优惠,则不会看到客户端提供了DES-
CBC3-SHA。

此损坏的服务器的快速解决方法是仅提供服务器支持的唯一密码:

import requests
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'DES-CBC3-SHA'
requests.get('https://banking4.anz.com')

但是请注意,这会将请求的默认密码列表设置为不安全的值。因此,如果要连接到应用程序中的其他站点,则不应使用此方法。而是看一下使用更复杂的解决方案,即对损坏的站点使用具有特定密码设置的HTTPAdapter。



 类似资料:
  • 我的web应用程序托管在Websphere application Server中。对于所有传出连接,我们在服务器级别配置了动态SSL越界。目前,由于修补程序,SSLv3已被禁用。现在,即使我们升级了SSL出站以支持TLSV1.2,并使用了基于TLS的通道MQ通道,到WMQ的连接仍然失败。详情如下。有人能帮忙吗? Websphere Server详细信息:

  • 我在设置打开班次时遇到问题,并在连接到我的服务器域后收到以下错误: 我不确定这是在告诉我做什么。我尝试按字面意思使用指令,但它无法识别命令。 有什么想法吗?

  • 问题内容: 我不确定如何解决此问题 我不知道为什么在尝试以下操作时会出现此错误: 当我尝试连接到postgres时: 问题答案: 可能是一些问题: PostgreSQL没有运行。用sudo检查 你的PostgresSQl不在端口5432上运行。你可以检查其键入 尝试连接到数据库时出现错误,例如用户名,密码或数据库名。检查它们是否是postgres要求你连接的对象,并且这是你要访问的db_name。

  • 在我做了和之后,我的postgres遇到了一些问题。我试着卸载postgres并重新安装它,但它并没有那么好用。 这就是我所做的: 现在,在我重新安装homebrew之后,当我使用时,它不显示任何错误消息。 但是我在我的Rails应用程序中运行,它显示: 更新 这对我也管用。

  • 注意:连接是LAN,在隧道模式下工作正常,但速度较慢