网络安全服务 (NSS) 是一套库,旨在支持安全客户端和服务器应用程序的跨平台开发。
使用 NSS 构建的应用程序可以支持 SSL v2 和 v3,TLS,PKCS #5,PKCS #7,PKCS #11,PKCS #12,S/MIME,X.509 v3 证书以及其他安全标准。
许多软件包需要 NSS,包括但不限于 Chromium 和 Firefox。
安装
安装 nss 软件包。
用法
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/
thunderbird
~/.thunderbird/
libreoffice-fresh
可通过选项进行配置 [1]
对于管理 PKCS #11 模块,NSS 提供了 modutil(1) 工具,对于管理证书和私钥 — 提供了 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 模块列表中。有关系统范围配置,请参阅 Transport Layer Security#Trust management。对于应用程序特定的配置,请使用类似以下命令添加 CA 证书
certutil -d ~/.pki/nssdb/ -A -i /path/to/certificate -n certificate_nickname -t C,,
参见
网络安全服务 - Mozilla
管理 NSS 数据库中的证书信任标志 - Meena Vyas, Oracle