Python 源SSL 错误 - SSLError(SSLCertVerificationError

in with 0 comment

SSL 报错时

 Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
WARNING: Retrying (Retry(total\=4, connect\=None, read\=None, redirect\=None, status\=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1018)'))': /simple/fastapi/
WARNING: Retrying (Retry(total\=3, connect\=None, read\=None, redirect\=None, status\=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1018)'))': /simple/fastapi/
WARNING: Retrying (Retry(total\=2, connect\=None, read\=None, redirect\=None, status\=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1018)'))': /simple/fastapi/
WARNING: Retrying (Retry(total\=1, connect\=None, read\=None, redirect\=None, status\=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1018)'))': /simple/fastapi/
WARNING: Retrying (Retry(total\=0, connect\=None, read\=None, redirect\=None, status\=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1018)'))': /simple/fastapi/
Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/fastapi/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host\='pypi.tuna.tsinghua.edu.cn', port\=443): Max retries exceeded with url: /simple/fastapi/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE\_VERIFY\_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:1018)'))) - skipping

这个错误信息表明 pip 在尝试从清华大学开源软件镜像站(pypi.tuna.tsinghua.edu.cn)下载软件包时,无法验证 SSL 证书。这可能是由于以下几个原因:

  1. 证书链不完整或过期。
  2. 系统的根证书存储(CA bundle)没有更新。
  3. 网络问题或中间人攻击尝试。
    以下是一些可能的解决方案:

方法 1:更新根证书

确保您的操作系统根证书存储是最新的。这通常涉及到更新您的操作系统或安装安全相关的更新。

方法 2:使用 --trusted-host 选项

如果您信任清华大学开源软件镜像站,并且理解这样做的风险(即绕过 SSL 验证可能会使您面临安全风险),则可以使用 --trusted-host 选项来安装软件包:

pip install --trusted-host pypi.tuna.tsinghua.edu.cn fastapi

方法 3:配置 pip 使用清华大学镜像

您可以在 pip 配置文件中永久设置 trusted-host 和使用清华大学镜像:

  1. 找到 pip 配置文件。在 Unix 或 macOS 上通常是 ~/.pip/pip.conf,在 Windows 上通常是 C:\Users\<username>\pip\pip.ini
  2. 编辑配置文件,添加以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
  1. 保存文件并尝试再次安装软件包。

方法 4:更新 Python 和 pip

确保您的 Python 和 pip 是最新版本,因为旧版本可能不支持最新的加密标准或证书格式。

pip install --upgrade pip

方法 5:检查网络连接

确保您的网络连接是稳定的,并且没有防火墙或代理设置阻止了 pip 访问外部资源。
请根据您的具体情况选择适合的方法。如果可能,最好解决证书验证问题,而不是简单地绕过它。

Responses