返回

Windows 上 Pip 安装时 SSL 证书验证失败,如何解决?

windows

在 Windows 上解决 Pip 安装时的 SSL 证书验证失败

问题

在 Windows 上使用 Python 的 pip 命令安装包时,您可能会遇到 "[SSL: CERTIFICATE_VERIFY_FAILED]" 错误。此错误表明 pip 无法验证所连接网站的 SSL 证书。通常,这是因为网站正在使用自签名证书或由中间人数据包检查设备重新签署。

解决方法

要解决此问题,您需要向 pip 提供受信任的证书颁发机构 (CA) 根证书。以下是执行此操作的步骤:

步骤 1:获取自定义 CA 证书

从颁发证书的机构获取自定义 CA 根证书。证书通常以 PEM 或 DER 格式提供。

步骤 2:将证书转换为 PEM 格式

如果证书不是 PEM 格式,请使用以下命令将其转换为 PEM 格式:

openssl x509 -in certificate.der -out certificate.pem -inform DER -outform PEM

步骤 3:将证书添加到 Windows 证书存储

  1. 运行证书管理单元 (certmgr.msc)。
  2. 展开“证书”>“受信任的根证书颁发机构”。
  3. 右键单击并选择“所有任务”>“导入”。
  4. 选择要导入的 PEM 格式证书文件。

步骤 4:更新 Pip 的 CA 存储

使用以下命令更新 pip 使用的 CA 存储:

pip install --trusted-host <hostname> --cert <path/to/certificate.pem>

例如:

pip install --trusted-host example.com --cert /path/to/custom-ca-certificate.pem

替代方法

除了上述方法,您还可以使用以下替代方法:

  • 使用自签名证书: 创建自己的自签名证书并将其添加到 Windows 证书存储中。
  • 使用环境变量: 设置以下环境变量以使用自定义 CA 证书:
SSL_CERT_FILE=<path/to/certificate.pem>
SSL_CERT_DIR=<path/to/directory/containing/certificate.pem>
  • 使用第三方包: 使用 pip 的 certifi 包来管理 CA 证书。它提供了对预安装的 CA 根证书存储的访问,并允许您添加自定义证书。

注意事项

  • 确保自定义 CA 根证书来自受信任的颁发机构。
  • 将证书添加到 Windows 证书存储需要管理员权限。
  • pip 可能需要重新启动才能应用更改。

常见问题解答

  1. 为什么会出现“SSL: CERTIFICATE_VERIFY_FAILED”错误?
    此错误表明 pip 无法验证所连接网站的 SSL 证书。这可能是由于网站正在使用自签名证书或由中间人数据包检查设备重新签署。

  2. 如何获取自定义 CA 根证书?
    从颁发证书的机构获取证书。证书通常以 PEM 或 DER 格式提供。

  3. 如何将证书转换为 PEM 格式?
    使用以下命令将其转换为 PEM 格式:

openssl x509 -in certificate.der -out certificate.pem -inform DER -outform PEM
  1. 如何将证书添加到 Windows 证书存储?

    1. 运行证书管理单元 (certmgr.msc)。
    2. 展开“证书”>“受信任的根证书颁发机构”。
    3. 右键单击并选择“所有任务”>“导入”。
    4. 选择要导入的 PEM 格式证书文件。
  2. 如何更新 Pip 的 CA 存储?
    使用以下命令更新 pip 使用的 CA 存储:

pip install --trusted-host <hostname> --cert <path/to/certificate.pem>