📌  相关文章
📜  同行的证书颁发者无法识别 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:50:40.738000             🧑  作者: Mango

同行的证书颁发者无法识别 - Shell/Bash

在使用 Shell/Bash 进行网络通信时,有可能会遇到“同行的证书颁发者无法识别”的错误。这个错误说明了在与远程服务器建立连接时,本地无法验证远程服务器提供的 SSL/TLS 证书,因为证书颁发机构不在本地的信任列表中。

什么是 SSL/TLS 证书?

SSL/TLS 证书是一种用于加密网络通信的数字证书。它用来验证远程服务器的身份,并创建一个私密的通信信道。当我们使用 Shell/Bash 进行网络通信时,例如使用 curl 命令获取网站的内容,如果网站启用了 SSL/TLS 协议,那么我们必须要验证 SSL/TLS 证书。

为什么会发生“同行的证书颁发者无法识别”的错误?

SSL/TLS 证书是由可信任的第三方机构颁发的。浏览器和操作系统内置了一些常见机构的根证书,因此我们通常不需要手动添加任何根证书。然而在某些情况下,我们使用的远程服务器的 SSL/TLS 证书由于种种原因,可能会由私人机构或者自建机构签署。这样的证书不在本地的信任列表中,因此在建立连接时就会遇到“同行的证书颁发者无法识别”的错误。

如何解决这个错误?

要解决“同行的证书颁发者无法识别”的错误,我们需要将证书手动添加到本地信任的列表中。可以使用 curl 命令的 --cacert 选项,指定一个包含证书的 PEM 文件。

curl --cacert /path/to/cert.pem https://example.com

如果你是在 Python 脚本中使用 requests 模块,也可以通过设置 verify 参数为证书 PEM 文件路径,来验证证书。

import requests

response = requests.get('https://example.com', verify='/path/to/cert.pem')
总结

“同行的证书颁发者无法识别”的错误是由于使用了不被信任的 SSL/TLS 证书引起的。要解决这个错误,我们需要手动将证书添加到本地的信任列表中。这可以通过 curl--cacert 选项或者 requests 模块的 verify 参数来实现。