是否可以在 Debian 上安装自定义 CA 证书而无需 ca-certificates 包?

是否可以在 Debian 上安装自定义 CA 证书而无需 ca-certificates 包?

是否可以在 Debian 上安装自定义 ca 证书而不安装软件包ca-certificate

我倾向于在每个版本的生命周期之外运行我的服务器,并且几年后我似乎总是遇到问题。简单的问题,比如 cURL 无法验证服务器、PHPopenssl.cafilecurl.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

相关内容