是否可以在 Debian 上安装自定义 ca 证书而不安装软件包ca-certificate
?
我倾向于在每个版本的生命周期之外运行我的服务器,并且几年后我似乎总是遇到问题。简单的问题,比如 cURL 无法验证服务器、PHPopenssl.cafile
和curl.cainfo
等的合法性。没有什么破坏性的,但很烦人。
我现在正在安装 Buster,希望这次从一开始就避免出现任何问题。
理想情况下我想下载cacert.pem来自curl.se(Mozilla 源代码),将其放入一个目录中,然后告诉操作系统和任何需要它的软件使用它。这样,当它过期时,我可以从curl.se 或Mozilla 源重新下载最新版本。
答案1
update-ca-certificates
实际上是一个shell脚本。您可以阅读它并根据您的需要修改其中的部分内容。
简而言之:update-ca-certificates
添加证书时,它会创建一个/etc/ssl/certs/
指向 PEM 格式的证书文件的符号链接。update-ca-certificates
期望 CA 证书位于带有后缀的 PEM 格式文件中*.crt
,并且链接名称将将该后缀更改为*.pem
:因此/etc/ssl/certs/<somename>.pem
将链接到/elsewhere/<somename>.crt
.
OpenSSL 要求包含受信任 CA 证书的目录可以通过其哈希值进行访问,因此在该/etc/ssl/certs/
目录中,将创建另一个符号链接:<certificate hash>.0 -> <somename>.pem
.可以<certificate hash>
通过以下方式手动计算:
openssl x509 -in <certificate PEM file> -noout -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
安装了任何 Java 打包版本,很可能会存在一个/etc/ca-certificates/update.d/jks-keystore
由 Java 包删除的脚本,该脚本同样会更新位于 的 Java 密钥库文件/etc/ssl/certs/java/cacerts
,以便它也包含与 OpenSSL CA 完全相同的证书证书目录/etc/ssl/certs
或文件/etc/ssl/certs/ca-certificates.crt
。
已编辑
答案2
- 复制
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
/usr/local/share/ca-certificates# ls -alFh
celkem 16K
drwxrwsr-x 2 root staff 4,0K úno 5 13:02 ./
drwxrwsr-x 7 root staff 4,0K kvě 7 2014 ../
-rw-r--r-- 1 root staff 1,5K úno 5 13:02 thawte-Primary-Root-CA-G3.crt
-rw-r--r-- 1 root staff 1,7K úno 5 13:01 thawte-SHA256-ssl-ca.crt
跑步update-ca-certificates
/usr/local/share/ca-certificates# update-ca-certificates
Updating certificates in /etc/ssl/certs... WARNING: Skipping duplicate certificate thawte-Primary-Root-CA-G3.pem
WARNING: Skipping duplicate certificate thawte-Primary-Root-CA-G3.pem
WARNING: Skipping duplicate certificate thawte-primary-root.pem
WARNING: Skipping duplicate certificate thawte-primary-root.pem
2 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
核实:
/etc/ssl/certs# ls -alFh | grep local
lrwxrwxrwx 1 root root 62 úno 5 13:03 thawte-Primary-Root-CA-G3.pem -> /usr/local/share/ca-certificates/thawte-Primary-Root-CA-G3.crt
lrwxrwxrwx 1 root root 57 úno 5 13:03 thawte-SHA256-ssl-ca.pem -> /usr/local/share/ca-certificates/thawte-SHA256-ssl-ca.crt
/etc/ssl/certs# openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt | openssl pkcs7 -print_certs -noout
subject=/CN=ACEDICOM Root/OU=PKI/O=EDICOM/C=ES
issuer=/CN=ACEDICOM Root/OU=PKI/O=EDICOM/C=ES
subject=/C=CO/O=Sociedad Cameral de Certificaci\xC3\xB3n Digital - Certic\xC3\xA1mara S.A./CN=AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
issuer=/C=CO/O=Sociedad Cameral de Certificaci\xC3\xB3n Digital - Certic\xC3\xA1mara S.A./CN=AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
subject=/C=IT/L=Milan/O=Actalis S.p.A./03358520967/CN=Actalis Authentication Root CA
issuer=/C=IT/L=Milan/O=Actalis S.p.A./03358520967/CN=Actalis Authentication Root CA
subject=/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
issuer=/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
...
Find your CA