是否可以在不安装软件包的情况下在 Debian 上安装自定义 ca 证书ca-certificate?
我倾向于在每个版本的生命周期之后运行我的服务器,而且几年后我似乎总是遇到问题。简单的问题,例如 cURL 无法验证服务器的合法性、PHPopenssl.cafile和curl.cainfo等。没有什么破坏性的,但很烦人。
我现在正在安装 Buster,希望从一开始就避免任何问题。
理想情况下,我想从 curl.se(Mozilla 源代码)下载cacert.pem,将它放在一个目录中,然后告诉操作系统和任何要求它使用它的软件。这样,当它过期时,我可以从 curl.se 或 Mozilla 源重新下载最新版本。
update-ca-certificates实际上是一个shell脚本。您可以阅读它并根据您的需要调整其中的一部分。简而言之:当
update-ca-certificates添加证书时,它会创建一个/etc/ssl/certs/指向 PEM 格式证书文件的符号链接。update-ca-certificates期望 CA 证书位于带有*.crt后缀的 PEM 格式文件中,并且链接名称的后缀将*.pem改为:so/etc/ssl/certs/<somename>.pem将链接到/elsewhere/<somename>.crt.OpenSSL 要求包含受信任 CA 证书的目录可以通过其哈希访问它们,因此在该
/etc/ssl/certs/目录中,将创建另一个符号链接:<certificate hash>.0 -> <somename>.pem.<certificate hash>可以手动计算:如果另一个证书具有相同的哈希,则该
.0部分将递增到.1,然后递增到.2等等,直到可以找到唯一的名称。这种散列不是一种安全机制:它只是允许 OpenSSL 在验证证书时通过其散列快速找到所需的 CA 证书。或者,
cd /etc/ssl/certs; openssl rehash .可用于为该目录中的所有证书创建哈希符号链接。/etc/ssl/certificates/ca-certificates.crt对于那些只接受其受信任 CA 证书列表作为单个文件的程序,新证书 PEM 文件的内容也将附加到. 如果 PEM 格式的证书缺少其尾随换行符,则脚本将在将证书附加到ca-certificates.crt.该
update-ca-certificates脚本还将运行放置在/etc/ca-certificates/update.d/.如果您安装了任何
.dpkg-packaged 版本的 Java,很可能会有一个名为/etc/ca-certificates/update.d/jks-keystoredrop 的 Java 包的脚本,该脚本将类似地更新位于 的 Java 密钥库文件/etc/ssl/certs/java/cacerts,因此它也将包含与 OpenSSL CA 完全相同的证书证书目录/etc/ssl/certs或文件/etc/ssl/certs/ca-certificates.crt.已编辑
my_own_ca.crt到/usr/local/share/ca-certificatesupdate-ca-certificatesupdate-ca-certificates创建必要的 simlink 并更新 /etc/ssl/certs/ca-certificates.crt文件。Linux 实用工具喜欢wget或curl默认将此文件用作 CA 文件。或者找到指定 CA 文件的开关或禁用检查证书的开关。对于 wget 它是:
wget --no-check-certificate- 用于禁用 CA 检查wget --ca-certificate=file- 使用文件作为带有证书授权包(“CA”)的文件来验证对等点。证书必须为 PEM 格式。例子
复制自己的 ca
crt后缀为/usr/local/share/ca-certificates跑
update-ca-certificates核实: