Python编写接口遇到证书验证错误,解决办法
Python编写接口遇到证书验证错误,解决办法
今天准备把这几天编写的py接口,部署到服务器上,部署成功后,去请求返回服务不可用,返回宝塔查看一下项目日志,报错:[SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
也就是证书验证错误哦,之前一直是在请求的时候使用verify=False去屏蔽证书验证,但是本地测试开发环境可以这样去做,用于项目上线就不太行了。
经过九九八十一次百度,也是成功解决了这个问题。(因为我使用的是aiohttp异步请求,所以这里的方案适用其他请求暂时未知)
解决办法
# 1. 导入ssl
import ssl
# 2. 配置ssl上下文管理
ssl_context = ssl.create_default_context()
ssl_context.load_verify_locations(cafile=certifi.where()) # 使用certifi的证书
ssl_context.check_hostname = True
ssl_context.verify_mode = ssl.CERT_REQUIRED
# 3. 安装并导入certifi
# pip install certifi
import certifi
# 4. 在每个异步请求方法,添加SSL上下文
async def rx_fetch_post(url, params, uid=''):
# ... 省略其他代码
async with aiohttp.ClientSession() as session:
try:
async with session.post(url, headers=headers, data=params, ssl=ssl_context) as response: # 添加ssl上下文参数
# ... 省略其他代码
# ... 省略其他代码
# 5. 重启服务器项目,请求成功
# {
# "code": 200,
# "msg": "获取成功",
# "data": {
# "list": [
# {
# "code": "108993592520250225001",
# "name": "小杰不吃了*",
# "time": "2025-02-25 16:13",
# "totalNum": 1
# }
# ]
# }
# }
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 枫月Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果