怎么解决ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1131)这个问题
时间: 2023-10-21 08:20:51 浏览: 318
ssl.zip_c ssl_c语言 openssl_linux openssl_site:www.pudn.com
`ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1131)` 这个问题通常是由于 Python 的 ssl 模块在进行 HTTPS 请求时无法验证服务器证书导致的。以下是一些解决方法:
1. 使用 verify=False 参数禁用证书验证:
```
import requests
response = requests.get('https://example.com', verify=False)
```
这种方法虽然可以解决问题,但是会降低请求的安全性。
2. 更新本地 SSL 证书:
在 Windows 系统上,可以执行以下命令更新证书:
```
pip install --upgrade certifi
```
在 macOS 上,可以执行以下命令更新证书:
```
sudo /Applications/Python\ {version}/Install\ Certificates.command
```
在 Linux 上,可以执行以下命令更新证书:
```
sudo apt-get install ca-certificates
```
3. 指定证书路径:
可以通过设置环境变量 `REQUESTS_CA_BUNDLE` 或者 `CURL_CA_BUNDLE` 来指定证书路径,这样 ssl 模块就可以找到证书进行验证了。
```
import os
import requests
os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/cert.pem'
response = requests.get('https://example.com')
```
4. 添加服务器证书到本地信任列表:
可以通过以下步骤将服务器证书添加到本地信任列表:
- 通过浏览器访问 HTTPS 网站,获取证书文件。
- 将证书文件保存到本地。
- 在 Python 程序中使用以下代码:
```
import ssl
context = ssl.create_default_context()
context.load_verify_locations('/path/to/cert.pem')
response = requests.get('https://example.com', verify='/path/to/cert.pem')
```
以上是一些可能的解决方法,具体方法需要根据实际情况选择。
阅读全文