[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1125)
时间: 2023-10-21 19:58:30 浏览: 263
这个错误通常出现在使用 Python 请求 HTTPS 网站时,表示 SSL 证书验证失败。这通常是由于使用了自签名的证书或者证书链中存在问题导致的。
有几种方法可以解决这个问题:
1. 更新 certifi 库:运行 `pip install --upgrade certifi` 命令来更新 certifi 库,它包含了根证书集合。
2. 忽略证书验证:在请求时添加 `verify=False` 参数可以忽略证书验证,但这并不推荐,因为会降低安全性。
3. 指定证书路径:如果你有正确的证书文件,可以使用 `verify='/path/to/certificate.crt'` 参数指定证书路径。
4. 添加根证书:如果你使用的是自签名证书,你可以将证书文件添加到 certifi 的根证书集合中。你可以参考 certifi 的文档来了解如何添加根证书。
请注意,在生产环境中,最好使用有效的证书并进行正确的验证,以确保安全性。
相关问题
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)
当使用urllib.urlopen打开一个https链接时,如果目标网站使用的是自签名的证书,就会抛出一个[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)的错误消息。解决这个问题的方法有两种:
1.全局取消证书验证(当项目对安全性问题不太重视时,推荐使用,可以全局取消证书的验证,简易方便):
```python
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
```
2.手动添加证书:
```python
import ssl
import urllib.request
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
url = 'https://example.com'
req = urllib.request.Request(url)
response = urllib.request.urlopen(req, context=context)
```
error[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)
这个错误通常是由于Python无法验证SSL证书的有效性导致的。有几种可能的解决方法:
1. 忽略证书验证,但这会降低安全性。可以在你的代码中添加以下行来忽略证书验证:
```
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
```
2. 更新证书存储库。这将确保Python能够验证证书的有效性。你可以从https://curl.haxx.se/ca/cacert.pem下载证书存储库,然后将其保存到本地,并使用以下行来指定它的位置:
```
import ssl
ssl._create_default_https_context = ssl.create_default_context(cafile="/path/to/cacert.pem")
```
注意,这可能需要管理员权限。
3. 确保你的系统时间正确设置。如果你的系统时间不正确,则可能会导致证书验证失败。请确保你的系统时间正确设置。
希望这些解决方案可以帮助你解决问题。
阅读全文