Python使用minio上传文件时urllib3的SSL报错

在将Minio服务器从HTTP切换到HTTPS后,遇到urllib3 SSL证书验证失败的问题。通过两种方法解决了该问题:一是直接修改urllib3的connectionpool.py源码,设置cert_reqs为'CERT_NONE';二是自定义http_client参数,创建Minio对象时关闭SSL验证。附带了完整的Minio文件上传Python代码。

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

Python使用minio上传文件时urllib3的SSL报错

问题出现

minio的服务器一直使用的是http进行访问,但是最近因为业务要求,全部都换成了https请求。换成https之后,上传文件就会报此错:urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=‘10.10.30.241’, port=9000): Max retries exceeded with url: /facebook?location= (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1124)’)))

解决方法一

因为我看到了报错是urllib报错,所以我直接去翻了urllib源码,直接修改了urllib3源码得以解决.
修改文件是:connectionpool.py
在这里插入图片描述
修改connectionpool.py文件第775行:

self.cert_reqs = 'CERT_NONE'

解决方法二

第一个方法解决是解决了,但是极其不方便。
因为你要换地方部署脚本或者重新安装时,每次都需要进源码修改。
之后我又翻了minio源码,找到了问题所在
在这里插入图片描述
minio里面的urliib并没有关闭ssl验证,我本来想在这里改,但是想到在这里改还是修改源码啊,我仔细看了下发现个参数:http_client

我们只需要在创建minio对象的时候自定义这个参数就可以了

    minioClient = Minio(
        '1.1.1.1:9000',
        access_key='mxxxxxxx',
        secret_key='mxxxxxxx',
        http_client=urllib3.PoolManager(
            timeout=urllib3.util.Timeout(connect=10, read=10),
            maxsize=10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值