网络安全服务

来自 ArchWiki

Network Security Services (NSS) 是一组库,旨在支持安全客户端和服务器应用程序的跨平台开发。

使用 NSS 构建的应用程序可以支持 SSL v2 和 v3、 TLS、PKCS #5、 PKCS #7PKCS #11PKCS #12S/MIMEX.509 v3 证书以及其他安全标准。

许多软件包都需要 NSS,包括例如 ChromiumFirefox

安装

安装 nss 软件包。

用法

NSS 是根据对动态配置的 PKCS #11 模块列表的操作来实现的。每个模块都提供对令牌的访问,令牌可以执行加密操作并存储加密对象。配置的模块列表通常存储在任意目录中,由用户在 NSS 初始化时在 pkcs11.txt 文件中提供。该列表始终包含内置模块“NSS Internal PKCS #11 Module”,其中包含令牌“NSS Generic Crypto Services”和“NSS Certificate DB”。第一个令牌提供加密机制,例如 RSA、SHA256、TLS 等。第二个令牌将证书和私钥存储在同一用户提供的目录中的 cert9.dbkey4.db 文件中。 pkcs11.txtcert9.dbkey4.db 文件也称为“NSS 数据库”。下表列出了某些应用程序的 NSS 数据库路径。您应该为每个操作提供一些路径。以下示例将使用 ~/.pki/nssdb/

应用程序 NSS 数据库路径
chromium, evolution ~/.pki/nssdb/
firefox ~/.mozilla/firefox/<profile>/
thunderbird ~/.thunderbird/<profile>/
libreoffice-fresh 可通过选项配置 [1]

为了管理 PKCS #11 模块,NSS 提供了 modutil(1) 实用程序;为了管理证书和私钥,NSS 提供了 certutil(1) 实用程序。

注意: NSS 可以根据初始化标志自动将 /usr/lib/libnssckbi.so 添加到 PKCS #11 模块列表中。

列出证书数据库

获取所有证书的列表

$ certutil -d ~/.pki/nssdb/ -L

获取有关证书的详细信息

$ certutil -d ~/.pki/nssdb/ -L -n certificate_nickname

生成 RSA 私钥

$ certutil -d ~/.pki/nssdb/ -G -g keysize -n nickname

生成证书签名请求

$ certutil -d ~/.pki/nssdb/ -R -k key-id -s subject -o file

生成自签名证书

$ certutil -d ~/.pki/nssdb/ -S -s subject -n nickname -x -t C,C,C -o file

借助 OpenSSL 生成自签名证书

使用 OpenSSL 可以让您拥有交互式提示,这比使用 certutil 主题格式更容易格式化。以下说明改编自 [2][3]

创建密钥对和证书(-noenc 禁用使用密码加密私钥)

$ openssl req -x509 -newkey rsa:4096 -keyout myKey.pem -out cert.pem -days 365 -noenc

创建 pkcs12 文件

$ openssl pkcs12 -export -out keyStore.p12 -inkey myKey.pem -in cert.pem

如果 NSS 数据库尚不存在,则创建它们

$ certutil -d ~/.pki/nssdb -N --empty-password

将您的密钥导入到数据库

$ pk12util -d ~/.pki/nssdb -i keyStore.p12

导入证书

要添加证书,请指定 -A 选项

$ certutil -d ~/.pki/nssdb/ -A -t "TRUSTARGS" -n certificate_nickname -i /path/to/cert/filename

TRUSTARGS 是三个字符串,由零个或多个字母字符组成,用逗号分隔,例如:"TCu,Cu,Tuw"。它们定义了证书应如何信任 SSL、电子邮件和对象签名,并在 certutil(1) 手册或 Meena 的博客文章 中对信任标志进行了解释。

要为 SSL 客户端身份验证添加个人证书和私钥,请使用以下命令

$ pk12util -d ~/.pki/nssdb/ -i /path/to/PKCS12/cert/filename.p12

这将导入存储在 PKCS #12 文件中的个人证书和私钥。个人证书的 TRUSTARGS 将设置为 "u,u,u"

编辑证书

使用 -M 选项调用 certutil 以编辑证书。例如,要编辑 TRUSTARGS

$ certutil -d ~/.pki/nssdb/ -M -t "TRUSTARGS" -n certificate_nickname

删除证书

使用 -D 选项删除证书

$ certutil -d ~/.pki/nssdb/ -D -n certificate_nickname

添加受信任的 CA 证书

系统范围的信任存储 /usr/lib/pkcs11/p11-kit-trust.so 通常会自动添加到 PKCS #11 模块列表中。有关系统范围的配置,请参见 传输层安全性#信任管理。对于特定于应用程序的配置,请使用以下命令添加 CA 证书

certutil -d ~/.pki/nssdb/ -A -i /path/to/certificate -n certificate nickname -t C,,

参见