解决 [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败问题

解决 [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败问题

该错误提示 “[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed” 表明 Python 在尝试建立一个安全的 SSL 连接时无法验证远端服务器的 SSL 证书。这种情况通常是由于本地缺少必要的 CA 证书或证书库过时引起的。

对于 Python 2.7 特别常见,因为 Python 2.7 的支持已经在 2020 年初结束,其自带的证书可能已经过时。这里有几个解决方案可以尝试:

1. 忽略 SSL 证书验证

虽然不推荐(因为这样会降低安全性),但你可以在命令行中添加 --trusted-host 参数和 --index-url 参数来绕过 SSL 验证:

以下以pyperclip 为例,把pyperclip 换成自己需要安装的模块:

以下是一些国内的镜像使用示例,可以选择其中一个自测一下:

pip install pyperclip --trusted-host pypi.mirrors.ustc.edu.cn --index-url=http://pypi.mirrors.ustc.edu.cn/simple/
pip install pyperclip --trusted-host pypi.tuna.tsinghua.edu.cn --index-url=http://pypi.tuna.tsinghua.edu.cn/simple
pip install pyperclip --trusted-host mirrors.aliyun.com --index-url=http://mirrors.aliyun.com/pypi/simple/
pip install pyperclip --trusted-host pypi.douban.com --index-url=http://pypi.douban.com/simple/
pip install pyperclip --trusted-host mirrors.163.com --index-url=http://mirrors.163.com/pypi/simple/

请注意,这里使用的是 HTTP 而不是 HTTPS,以避免 SSL 验证。

2. 更新 certifi 包

certifi 包包含了最新的 CA 证书数据。可以尝试手动下载并安装合适的 certifi 包:

  1. PyPI certifi 页面 下载合适的 certifi 包。

  2. 使用 pip 安装下载的 .whl 文件或 .tar.gz 文件。例如:

    pip install /path/to/certifi-xxxx.whl
    

3. 手动安装模块

以下以pyperclip 为例:

可以尝试手动下载 pyperclip 的源代码,然后手动安装:

  1. 前往 PyPI pyperclip 页面,下载源代码包。(可以搜索自己需要的包)

  2. 解压下载的文件。

  3. 在命令行中导航到解压后的目录,运行以下命令安装:

    python setup.py install
    

通过这些步骤,你应该能够解决 SSL 证书验证失败的问题并成功安装所需的包。

在使用 Python 的 requests 库进行 HTTPS 请求时,有时会遇到 SSL 证书验证失败问题。这通常是由于以下几个原因导致的: 1. **证书过期或无效**:目标网站的 SSL 证书可能已经过期或无效。 2. **自签名证书**:目标网站使用了自签名证书,而不是由受信任的证书颁发机构签发的证书。 3. **中间人攻击**:网络中存在中间人攻击,篡改了 SSL 证书。 4. **本地证书链不完整**:本地机器上缺少某些中间证书,导致验证失败解决方法如下: 1. **忽略 SSL 证书验证**(不推荐,除非在测试环境中): ```python import requests response = requests.get('https://example.com', verify=False) print(response.content) ``` 这种方法会忽略 SSL 证书验证,存在安全风险。 2. **指定 CA 证书**: 如果你有目标网站的 CA 证书,可以将其路径传递给 `verify` 参数: ```python import requests response = requests.get('https://example.com', verify='/path/to/ca_certificate.pem') print(response.content) ``` 3. **使用 `certifi` 库**: `certifi` 库提供了 Mozilla 提供的证书集合,可以确保你的请求使用最新的受信任证书: ```python import requests import certifi response = requests.get('https://example.com', verify=certifi.where()) print(response.content) ``` 4. **更新本地证书链**: 确保你的操作系统和 Python 环境中的证书链是最新的,可以从证书颁发机构下载最新的证书并更新本地证书存储。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值