网络安全服务
Network Security Services (NSS) 是一组库,旨在支持安全客户端和服务器应用程序的跨平台开发。
使用 NSS 构建的应用程序可以支持 SSL v2 和 v3、 TLS、PKCS #5、 PKCS #7、 PKCS #11、 PKCS #12、 S/MIME、 X.509 v3 证书以及其他安全标准。
许多软件包都需要 NSS,包括例如 Chromium 和 Firefox。
安装
用法
NSS 是根据对动态配置的 PKCS #11 模块列表的操作来实现的。每个模块都提供对令牌的访问,令牌可以执行加密操作并存储加密对象。配置的模块列表通常存储在任意目录中,由用户在 NSS 初始化时在 pkcs11.txt
文件中提供。该列表始终包含内置模块“NSS Internal PKCS #11 Module”,其中包含令牌“NSS Generic Crypto Services”和“NSS Certificate DB”。第一个令牌提供加密机制,例如 RSA、SHA256、TLS 等。第二个令牌将证书和私钥存储在同一用户提供的目录中的 cert9.db
和 key4.db
文件中。 pkcs11.txt
、cert9.db
和 key4.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) 实用程序。
/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,,