aiohttp 指定 tls 版本 (ssl 错误)

当遇到Python的aiohttp库在访问某些网站时出现SSL错误,原因是服务器仅支持低版本TLS。通过分析curl和openssl的交互,发现服务器响应TLS 1.0,而curl和aiohttp默认不支持不安全的TLS版本。通过指定TLS 1.0,问题得以解决。
摘要由CSDN通过智能技术生成

某些网站对 ssl 1.0 以上的版本支持并不友好,但是 python ssl lib 默认会指定当前OpenSSL支持的最高版本,并且当服务器返回的ssl版本号低于或者等于1.0时, 会出现如下错误

aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host www.mdnkids.com:443 ssl:<ssl.SSLContext object at 0x1096634a8> [None]

看一下错误原因的推断过程,我的操作系统是 Mac OS, 首先用 curl 命令进行尝试

  curl 'https://www.mdnkids.com'
  curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.mdnkids.com:443

 发现 curl 也一样有 ssl error, 那么尝试直接用 openssl 对该域名进行连接

openssl s_client  -connect www.mdnkids.com:443 -msg
# if fail, try openssl s_client -CApath /usr/local/etc/openssl/certs  -connect www.mdnkids.com:443 -msg

==> TLS 1.2 Handshake [length 0139], ClientHello
==> ...
==>  TLS 1.0 Handshake [length 004a], ServerHello
==>  TLS 1.0 Handshake [length 0c0a], Certificate
==> ...
=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值