python发送http请求时遇到:error 54, 'Connection reset by peer' 解决方法

本文介绍了解决Python发送HTTPS请求时遇到的'Connection reset by peer'错误的方法,包括升级Python版本、使用pip安装特定模块及内嵌证书等方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python发送http请求时遇到:error 54, 'Connection reset by peer' 解决方法

背景

公司将所有内网环境均从http访问更换为https访问,需要下发自制的ca【Certificate Authority】到所有访问内网环境的机器上以便登陆内网环境。
当遇到需要向服务端发送http请求,获取一些数据的时候报错’Connection reset by peer’。代码如下:

f_path = '/tmp/ca.cert.pem'

def add_ca():
    # 导入ca证书
    f = open(f_path, 'w+')
    ca = "-----BEGIN CERTIFICATE-----xxxxx-----END CERTIFICATE-----"
    f.writelines(ca)

url = 'https://jira.xx.local/rest/api/2/search'
res = requests.post(url, json=text, headers={"Authorization": "xxxx"}, verify=f_path)

原因

OpenSSL 这个库太老了。不兼容你要请求的网址。

重点

如果系统同时安装了多个版本的python,请查看你的代码采用的是python是哪个版本再采取解决方法。

解决方法

  1. 最好的办法:直接升级python到2.7.x及以上,会解决此问题。
  2. 如果不想升级python的话,可以用:pip install requests[security]
  3. 另一种已过时的方法:pip install pyopenssl ndg-httpsclient pyasn1

采取证书内嵌代码可节省每台机器都手动安装ca的烦恼

def add_ca():
    # 导入ca证书
    f = open(f_path, 'w+')
    ca = "-----BEGIN CERTIFICATE----------END CERTIFICATE-----"
    f.writelines(ca)

并在发送http请求时强制指定此ca证书:

 res = requests.post(url, json=text, headers={"Authorization": "xxxxx"},verify=f_path)
 #f_path是ca证书的路径
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值