📅  最后修改于: 2023-12-03 14:50:40.738000             🧑  作者: Mango
在使用 Shell/Bash 进行网络通信时,有可能会遇到“同行的证书颁发者无法识别”的错误。这个错误说明了在与远程服务器建立连接时,本地无法验证远程服务器提供的 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
参数来实现。