📌  相关文章
📜  代码 UNABLE_TO_GET_ISSUER_CERT_LOCALLY - Shell-Bash (1)

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

代码 UNABLE_TO_GET_ISSUER_CERT_LOCALLY - Shell-Bash

当我们在使用Shell脚本编写程序时,可能会遇到UNABLE_TO_GET_ISSUER_CERT_LOCALLY的错误。这通常是由于缺少证书文件或证书文件不在正确的位置导致的。因此,我们需要确定证书的位置并正确配置它。

问题原因

此错误通常发生在使用Curl或Wget等工具进行HTTPS连接时。由于这些工具默认使用系统证书文件进行身份验证,因此缺少证书文件或证书文件不在正确的位置可能会导致这个错误。

解决方法

解决该问题的方法是找到证书文件并将其正确配置。根据不同的操作系统,证书文件的路径可能会有所不同。

Linux

在Linux上,证书文件通常位于/etc/ssl/certs/目录下。因此,我们可以使用以下命令找到该目录并将其添加到Curl的CA证书路径中:

export SSL_CERT_DIR=/etc/ssl/certs/

如果该目录不存在,则可以使用以下命令安装证书:

sudo apt-get update
sudo apt-get install -y ca-certificates
macOS

在macOS上,证书文件通常被添加到密钥链中,并作为系统钥匙串中的一部分存储。因此,我们可以使用以下命令将证书添加到Curl的CA证书路径中:

export SSL_CERT_FILE="$(security find-certificate -a -p /Library/Keychains/System.keychain | openssl x509 -inform pem -outform der | openssl dgst -sha1 -hex | sed 's/^.* //').0"
Windows

在Windows上,证书文件通常位于系统证书存储区中。因此,我们可以使用CERTMGR.MSC工具打开证书管理器,并将证书复制到Curl的CA证书路径中:

export SSL_CERT_FILE="C:\Program Files\Common Files\SSL\cert.pem"
总结

在使用Shell脚本编写程序时,我们可能会遇到UNABLE_TO_GET_ISSUER_CERT_LOCALLY的错误。这个错误通常是由于缺少证书文件或证书文件不在正确的位置导致的。因此,我们需要找到证书文件并将其正确配置,以便成功完成HTTPS连接。