📅  最后修改于: 2023-12-03 15:21:11.122000             🧑  作者: Mango
本文将介绍在 Windows 平台下,出现无法访问 SSL 证书问题,具体表现为无法获取本地颁发者证书的解决方案,将涵盖以下内容:
当使用 Windows 系统自带的 Powershell 或 Git Bash 等 Shell 工具进行网络请求时,可能会遇到如下报错信息:
fatal: unable to access 'https://example.com/': SSL certificate problem: unable to get local issuer certificate
该报错信息表明 SSL 证书验证失败,无法获取本地颁发者证书。
出现此问题的原因包括但不限于以下情况:
以下将介绍针对 Windows 平台下无法获取本地颁发者证书问题的解决方案及步骤。
忽略 SSL 证书验证是一个不太安全的临时解决方案,不建议在生产环境中使用。
如果你希望忽略 SSL 证书验证,可以在网络请求的命令中添加 --insecure
参数,示例如下:
curl --insecure https://example.com/
如果没有证书链,可以尝试通过以下步骤获取证书链:
打开网站,获取证书信息,可以通过浏览器开发者工具、openssl 等工具获得。
通过 openssl 工具导出证书信息,示例命令如下:
openssl s_client -connect example.com:443
复制输出内容包括 -----BEGIN CERTIFICATE-----
到 -----END CERTIFICATE-----
之间的内容,保存为 .cer
文件。
可以通过以下命令将 .cer
文件转换为 .pem
文件:
openssl x509 -in example.cer -out example.pem -outform PEM
修改网络请求命令,添加证书参数,示例如下:
curl --cacert example.pem https://example.com/
如果某些操作系统自带的根证书不完整,可以考虑手动安装缺失的根证书。
以下为安装证书的步骤:
到 https://curl.se/docs/caextract.html 下载 cacert.pem
文件。
将 cacert.pem
文件添加到环境变量中:
set CURL_CA_BUNDLE=c:\path\to\cacert.pem
重新启动 Shell 窗口,再次运行网络请求命令即可。
本文中提到的工具:
以下为本文中提到的参考资料: