是否可以在不安装软件包的情况下在 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-keystore
drop 的 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-certificates
update-ca-certificates
update-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
核实: