是否可以在 Linux 上添加系统范围的客户端证书?(OpenSSL)

是否可以在 Linux 上添加系统范围的客户端证书?(OpenSSL)

是否可以在 Linux 上添加系统范围的客户端证书,以便所有使用 OpenSSL(或等效证书)的应用程序都会自动使用它们?我发现的唯一解决方案是将证书添加到/usr{,/local}/share/ca-certificates并运行update-ca-certificates。但这似乎不起作用,因为如果不手动指定客户端证书,我就无法使用 wget 连接到我的测试服务器。

答案1

没有。

(客户端证书从根本上来说不是“系统范围的”证书——它们通常颁发给用户,甚至 Windows 也有单独的每个用户存储,而不是系统范围的存储。您会在 $HOME/ 中寻找某些内容,而不是在 /usr 中。)

ca-certificates顾名思义,该目录用于 CA 证书(即受信任的颁发者)验证服务器证书。尽管文件格式相同,但 TLS 库不会将所有证书加载到一个池中,而是将它们分开,即 OpenSSL 甚至不会从 ca-certificates 加载的文件中,除非它确实想根据已知 CA 验证服务器证书。)


可以稍微接近 Windows 的行为(即能够通过“certmgr.msc”全局导入证书),但这不是默认设置,并且仍然无法与许多应用程序一起使用,因为它们不支持必要的功能。但

  • 某些程序支持 PKCS#11(用于智能卡)。安装 SoftHSM2 并将所有浏览器配置为使用“libsofthsm2”PKCS#11 模块,将允许所有浏览器访问导入 SoftHSM2 的相同客户端证书。(当然,其他 PKCS#11 模块也可以使用,例如 tpm2_pkcs11。)

    随着越来越多的程序使用 p11-kit,这变得越来越简单,不再需要在每个单独的应用程序中处理插槽号或对象 ID。尽管如此,它仍然远不及 Windows CNG 提供的集成。

  • 一些使用 Mozilla “NSS” TLS 库的程序(例如 Chrome、Chromium、任何基于 Chromium 的应用程序、Evolution 邮件客户端,以及我是否提到过 Chrome)会告诉它使用“共享” NSS 配置数据库~/.pki/nssdb。导入到此数据库的任何证书都将对使用它的所有应用程序可见。

    不幸的是,这不包括 Firefox 和 Thunderbird(使用 NSS 的另外两个最大的程序),它们具有单独的每个配置文件 NSS 配置。它们的 cert/key.db 文件可以符号链接到 ~/.pki/nssdb 中的文件,但这不是默认的。

    (当然,它不包括使用 OpenSSL 或 GnuTLS 的应用程序。)

相关内容