[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)
时间: 2023-12-15 20:30:45 浏览: 2334
当使用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)
```
相关问题
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)
这个错误通常是由于您的 Python 安装缺少根证书文件或 SSL 证书配置不正确引起的。您可以尝试以下方法来解决这个问题:
1. 升级到最新版本的 Python。
2. 检查您的操作系统是否安装了根证书文件。如果没有,请下载最新的根证书文件并安装。
3. 在 Python 中设置 SSL 环境变量。例如,在 Linux 上,您可以设置 `export SSL_CERT_FILE=/path/to/ca-bundle.crt`,在 Windows 上,您可以设置 `set SSL_CERT_FILE=C:\path\to\cacert.pem`。
4. 禁用 SSL 证书验证。这不是一个安全的解决方案,并且仅适用于测试目的。您可以在使用 urllib 或 requests 等库时设置 `verify=False` 参数来禁用 SSL 证书验证。
希望这些方法能够解决您的问题。
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. 确保你的系统时间正确设置。如果你的系统时间不正确,则可能会导致证书验证失败。请确保你的系统时间正确设置。
希望这些解决方案可以帮助你解决问题。
阅读全文
相关推荐















