我安装了该mono-complete
软件包并惊讶地在安装日志中看到这几行:
Processing triggers for ca-certificates (20190110ubuntu1.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
以及以下几行:
127 new root certificates were added to your trust store.
看来这是由安装引起的ca-certificates-mono
。Anapt-cache search ca-certificate
还指出 Java 有一个类似的包(ca-certificates-java
)。
这会影响系统受信任的根证书存储吗?如果没有,我希望 Mono 和 Java 使用它们自己的内部证书存储。那么它为什么会调用/etc/ca-certificates/update.d
?
答案1
我不是完全地熟悉 ca 证书或您所陈述的软件包的行为,但我确实对这些软件包进行了一些深入研究。
ca-certificates-{mono|java}
安装不同的 ca 证书更新挂钩。 /etc/ca-certificates/update.d/jks-keystore
适用于 Java 和/etc/ca-certificates/update.d/mono-keystore
Mono。
Java 包将所有受信任的现有 CA 证书ca-certificates
(包括添加的、手动安装的受信任证书等)重新打包为 JKS(Java KeyStore)格式,供 Java 应用程序使用。它没有添加任何可生成新证书的配置或文件,但“更新”将是捆绑为 JKS 格式的证书。
Mono 包实际上调用了 Mono 的程序certsync.exe
:
exec /usr/bin/mono $MONO_OPTIONS /usr/lib/mono/4.5/cert-sync.exe "$@"
这似乎是 Mono 将系统ca-certificates
存储与 Mono 的密钥库同步的机制,我认为这与系统ca-certificates
存储是分开处理的,因为它具有.exe
格式和 Windows 兼容性 - 它可能被重新捆绑到 Mono 程序的 Windows 兼容证书存储中。
无论如何,在剖析了更新脚本和这些包似乎安装的文件之后,这两个包都不会改变系统上实际的证书 - 但是,如果这些密钥库尚未更新,则在应用新的更新挂钩时,所有证书都会被更新并添加到证书存储中。