给定:一个绝对隔离的 LAN,其中包含许多使用本地 CA 服务器的 Web 服务。
所有用户主机都安装了 ca 证书,并且 .crt 文件由update-ca-certificates
. 类似浏览器的软件,例如 Chrome 等,在没有报告的情况下运行。
但是每个命令行实用程序,例如 curl、git、wget 等都会遇到错误,因为它们无法验证本地发行者。
来自卷曲的消息:
curl: (60) SSL 证书问题:无法获取本地颁发者证书。
大多数食谱只涉及为 Internet 范围的证书安装包。一些提到 /etc/pki/whitelist 路径和update-ca-trust
脚本的使用,但系统或存储库中都没有。
主机操作系统:Debian 11
在您选择的名称下创建一个目录
/usr/local/share/ca-certificates
,并将您的 CA 服务器的公共 CA 证书以 PEM 格式作为文件放入其中*.crt
。然后运行update-ca-certificates
。它将以多种格式在系统范围内添加您的本地 CA 证书
/etc/ssl/certs
:/etc/ssl/certs
/etc/ssl/certs/ca-certificates.crt
/etc/ca-certificates/update.d
,例如:/etc/ca-certificates/update.d/jks-keystore
脚本生成 CA 证书的 JKS 密钥库,如/etc/ssl/certs/java/cacerts
.有一个手册页
man update-ca-certificates
,更多文档在/usr/share/doc/ca-certificates
. 但是,除非您通读了所有文档,否则您可能会忽略一个事实,即您需要在/usr/local/share/ca-certificates
其下创建一个目录并将您的 CA 证书放入其中;顶层的任何证书文件都/usr/local/share/ca-certificates
将被忽略。该
update-ca-certificates
命令用于 Debian 和相关发行版;你update-ca-trust
发现提到的起源于 Fedora,似乎也用于 Arch(也许还有相关的发行版?)。这两个命令基本上完成相同的工作,尽管它们之间的确切路径名有所不同,因为每个发行版系列都维护了一个略有不同的系统级 CA 证书目录层次结构。