17.3. 续订子系统证书
更新证书的方法有两种。重新生成证书 会取其原始密钥及其原始配置集和请求,并使用新的有效期和过期日期重新创建相同的密钥。重新加密 证书将初始证书请求重新提交到原始配置文件,但会生成一个新密钥对。管理员可以通过重新密钥来更新管理员证书。
17.3.1. 在 End-Entities 表单中重新加密证书
可以使用原始证书的序列号直接在最终用户注册表单中直接续订子系统证书。
- 以 CA 结束实体形式续订证书,如 第 5.4 节 “续订证书” 所述。这要求正在续订的子系统证书的序列号。
- 将证书导入到子系统的数据库,如 第 17.6.1 节 “在证书系统数据库中安装证书” 所述。证书可以使用 certutil 或控制台导入。例如:
certutil -A -n "ServerCert cert-example" -t u,u,u -d /var/lib/pki/instance_name/alias -a -i /tmp/example.cert
17.3.2. 在控制台中续订证书
Java 子系统可以通过其管理控制台更新其任何子系统证书。这个过程与请求新的子系统证书(第 17.2 节 “通过控制台请求证书”)完全相同,有一个关键区别:续订 使用现有密钥对 而不是生成新的密钥对。
图 17.1. 续订子系统证书
续订证书后,从数据库中删除原始证书(第 17.6.3 节 “从数据库中删除证书”)。
17.3.3. 使用 certutil 续订证书
certutil 可用于使用证书数据库中的现有密钥对生成证书请求。然后,可以通过常规配置文件页面提交新证书请求,以便 CA 发布更新的证书。
注意
加密和签名证书在单个步骤中创建。但是,续订过程一次仅续订一个证书。
要在证书对中续订这两个证书,必须单独更新每个证书。
- 获取令牌数据库的密码。
cat /var/lib/pki/instance_name/conf/password.conf internal=263163888660
- 打开证书正在续订的实例的证书数据库目录。
cd /var/lib/pki/instance_name/alias
- 列出正在续订的证书的密钥和别名。要续订证书,用于生成和提供给新证书的主题名称必须与旧证书中的主题名称相同。
# certutil -K -d . certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services" Enter Password or Pin for "NSS Certificate DB": < 0> rsa 69481646e38a6154dc105960aa24ccf61309d37d caSigningCert cert-pki-tomcat CA
- 复制
别名
目录作为备份,然后从证书数据库中删除原始证书。例如:certutil -D -n "ServerCert cert-example" -d .
- 运行 certutil 命令,并将选项设置为现有证书中的值。
certutil -d . -R -n "NSS Certificate DB:cert-pki-tomcat CA" -s "cn=CA Authority,o=Example Domain" -a -o example.req2.txt
生成新证书和密钥对和续订证书之间的区别在于-n
选项的值。要生成完全新的请求和密钥对,-k
设置密钥类型,与-g
一起使用,这会设置位长度。对于续订请求,-n
选项使用证书别名来访问存储在安全数据库中的现有密钥对。有关参数的详情,请查看 certutil(1) man page。 - 提交证书请求,然后检索它并安装它,如 第 5.3 节 “请求和接收证书” 所述。
17.3.4. 续订系统证书
在 PKI 服务器运行时,证书系统不会自动在线续订系统证书。但是,如果系统证书过期,证书系统将无法启动。
续订系统证书:
- 如果系统证书已过期:
- 创建临时证书:
# pki-server cert-create sslserver --temp
- 将临时证书导入到证书系统的网络安全服务(NSS)数据库中:
# pki-server cert-import sslserver
- 启动证书系统:
# pki-server start instance_name
- 显示证书并记录过期系统证书的 ID:
# pki-server cert-find
- 创建新的持久性证书:
# pki-server cert-create certificate_ID
- 停止证书系统:
# pki-server stop instance_name
- 导入新证书来替换过期的证书:
# pki-server cert-import certificate_ID
- 启动证书系统:
# pki-server start instance_name