MrD*_*Coy 8 automation ssl ubuntu
在创建新的证书颁发机构,手动将 CA 链导入浏览器,并验证浏览器可以信任与中介签署的新证书后,我们将 CA 证书链(pem 和 crt 格式)复制到以下目录下的 Ubuntu 服务器:
然而,一旦完成,Ubuntu 机器上的应用程序(如 wget/curl/java)仍然不信任使用新证书的连接。根据另一篇文章,我们需要在拥有证书的每台机器上运行dpkg-reconfigure -f noninteractive ca-certificates
或update-ca-certificates
。这些命令不仅不起作用,而且在数千台服务器上运行它们也是不切实际的。我们使用 CFEngine 进行配置管理,但据我所知,它似乎没有这种功能。
有没有办法编写 Ubuntu 脚本以非交互式更新受信任的 CA 证书,这种方式可以在数千台机器上运行?
我同意 BillThor 提到的所有内容,但我要补充一点,可能有必要完全重建证书存储区,因为有时似乎 update-ca-certificates 太努力懒惰,实际上并没有更新它应该更新的内容.
rm -f /usr/local/share/ca-certificates/certificate.crt
# --fresh is needed to remove symlinks to no-longer-present certificates
update-ca-certificates --fresh
Run Code Online (Sandbox Code Playgroud)
另请注意,一旦 update-ca-certificates 完成,它应该已将/etc/ssl/certs/*.pem
文件符号链接到/usr/local/share/ca-certificates/
或 中的相应证书/usr/share/ca-certificates/
。正如 BillThor 所提到的,还会有一个指向以指纹为名称的文件的符号链接 - 它类似于349f2832.0
.
ls -l 可以确认这一点:
--snip--
lrwxrwxrwx 1 root root 72 Feb 6 2014 Security_Communication_EV_RootCA1.pem -> /usr/share/ca-certificates/mozilla/Security_Communication_EV_RootCA1.crt
lrwxrwxrwx 1 root root 69 Mar 25 2014 Security_Communication_RootCA2.pem -> /usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
lrwxrwxrwx 1 root root 69 Feb 6 2014 Security_Communication_Root_CA.pem -> /usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
lrwxrwxrwx 1 root root 61 Feb 6 2014 Sonera_Class_1_Root_CA.pem -> /usr/share/ca-certificates/mozilla/Sonera_Class_1_Root_CA.crt
--snip--
Run Code Online (Sandbox Code Playgroud)
还要注意 *.crt 和 *.pem 是同一个文件。这意味着放置的原始 .crt 应该是 .pem 格式。
.pem 格式文件如下所示:
-----BEGIN CERTIFICATE-----
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
--snip--
IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
O+7ETPTsJ3xCwnR8gooJybQDJbw=
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
您可以通过对证书运行 openssl 来测试您的证书安装:
openssl x509 -in /etc/ssl/certs/[certname].pem -noout -text
和
openssl x509 -in /usr/local/share/ca-certificates/[certname].pem -noout -text
(当然替换 [certname])
您应该会看到有关您的证书的一些广泛信息,并且两者都应该匹配(因为带有符号链接,它们应该是同一个文件)。
如果它们不匹配,那么你应该重新运行 update-ca-certificates --fresh
如果他们根本不输出有用的信息,那么您需要检查您的证书并确保它采用有效的 PEM 格式。
编辑:BillThor 提到这不适用于 Java,但至少在 debian 上似乎,Java 的证书存储也由 update-ca-certificates 工具保持最新。除了运行 Adobe Air 应用程序的 Wine 之外,我不知道 Linux 上还有其他使用替代证书存储的东西。
归档时间: |
|
查看次数: |
26262 次 |
最近记录: |