SDB:在应用程序或整个系统之间共享证书
本文档解释了一个实验性功能!请谨慎使用并发送反馈,以便我们最终确定它。 重要提示:虽然该过程不应破坏性(旧的 NSS (3) 数据库应保持不变),但我强烈建议备份您的配置文件。
情况
您希望为以下所有应用程序使用相同的个人证书存储,并可选地修改整个系统的根证书。
- Firefox
- Thunderbird
- SeaMonkey
- Chromium
- Evolution
流程
在没有修改的情况下,所有基于 Mozilla 的应用程序都在应用程序的配置文件目录中维护自己的证书存储,而 Chromium 已经使用 $HOME/.pki/nssdb,并采用基于 sqlite 的存储。在 openSUSE 中,我们提供了修改,只需导出一些环境变量,即可轻松地将 Firefox、Thunderbird 和 SeaMonkey 切换到使用相同的存储位置
export NSS_SHARED_DB_PATH=$HOME/.pki/nssdb export NSS_USE_SHARED_DB=1
(最新的 libnsssharedhelper0 版本(1.0.10)不需要第一个。)
设置上述环境后,所有启用的 Mozilla 应用程序将使用相同的证书存储(在 openSUSE 中,这意味着 Firefox、Thunderbird、Seamonkey、Chromium 以及可能还有 Evolution(待确认)。例如,如果随后启动 Firefox,它将打开旧数据库和新数据库,并最终将证书迁移到新数据库。只有在未设置主密码或在会话期间提供主密码的情况下才会发生这种情况。只有第一个创建数据库的应用程序才能维护其保存的密码。稍后合并的应用程序将无法解密它们,因为 NSS 数据库中只存在一个用于此目的的密钥。
如果您想预配置整个系统以使用某些证书(包括额外的 CA 证书),下一步是安装软件包
mozilla-nss-sysinit
此软件包将额外的证书存储安装到 /etc/pki/nssdb,根用户可以使用 certutil(来自 mozilla-nss-tools)来操作系统范围内的证书存储。当应使用系统范围内的证书存储时,请勿再导出 NSS_SHARED_DB_PATH=$HOME/.pki/nssdb,因为默认值已经是 /etc/pki/nssdb。
将根证书导入系统范围内的证书存储(例如 CAcert)
curl -k https://www.cacert.org/certs/root.crt > cacert.crt setup-nsssysinit off certutil -d sql:/etc/pki/nssdb -t TC,TC,TC -A -i cacert.crt -n cacert setup-nsssysinit on