12.3. 通过 SCEP 请求 CA 签名证书
简单证书注册协议(SCEP)通过 CA 自动和简化证书管理流程。它允许客户端直接从 CA 的 SCEP 服务请求和通过 HTTP 检索证书。此过程由一次性 PIN 保护,该 PIN 通常仅在有限时间内有效。
以下示例将 SCEP CA 配置添加到
certmonger
中,请求新证书,并将其添加到本地 NSS 数据库中。
- 将 CA 配置添加到
certmonger
:[root@server ~]# getcert add-scep-ca -c CA_Name -u SCEP_URL
- -c: CA 配置的强制别名。稍后可以将相同的值传递给其他 getcert 命令。
- -u: 服务器的 SCEP 接口的 URL。
- 使用 HTTPS URL 时强制参数:-r CA_Filename: SCEP 服务器 CA 证书的 PEM 格式的副本的位置,用于 HTTPS 加密。
- 验证 CA 配置是否已成功添加:
[root@server ~]# getcert list-cas -c CA_Name CA 'CA_Name': is-default: no ca-type: EXTERNAL helper-location: /usr/libexec/certmonger/scep-submit -u http://SCEP_server_enrollment_interface_URL SCEP CA certificate thumbprint (MD5): A67C2D4B 771AC186 FCCA654A 5E55AAF7 SCEP CA certificate thumbprint (SHA1): FBFF096C 6455E8E9 BD55F4A5 5787C43F 1F512279
当 CA 证书指纹通过 SCEP 检索并显示在命令输出中时,CA 配置已成功添加。在通过未加密 HTTP 访问服务器时,手动将thumbprint 与 SCEP 服务器中显示的服务器进行比较,以防止 Man-in-the-middle 攻击。 - 从 CA 请求证书:
[root@server ~]# getcert request -I Task_Name -c CA_Name -d /etc/pki/nssdb -n Certificate_Name -N cn="Subject Name" -L one-time_PIN
- -i: 任务的名称。稍后可以将相同的值传递给 getcert list 命令。
- -c: 将请求提交到的 CA 配置。
- -d: 带有 NSS 数据库的目录,以存储证书和密钥。
- -n: 证书 Nickname,在 NSS 数据库中使用。
- -n: CSR 中的主题名称。
- -L: CA 发布的时间限制一次性 PIN。
- 提交请求后,您可以验证证书是否已签发并正确存储在本地数据库中:
[root@server ~]# getcert list -I TaskName Request ID 'Task_Name': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/pki/nssdb',nickname='TestCert',token='NSS Certificate DB' certificate: type=NSSDB,location='/etc/pki/nssdb',nickname='TestCert',token='NSS Certificate DB' signing request thumbprint (MD5): 503A8EDD DE2BE17E 5BAA3A57 D68C9C1B signing request thumbprint (SHA1): B411ECE4 D45B883A 75A6F14D 7E3037F1 D53625F4 CA: AD-Name issuer: CN=windows-CA,DC=ad,DC=example,DC=com subject: CN=Test Certificate expires: 2018-05-06 10:28:06 UTC key usage: digitalSignature,keyEncipherment eku: iso.org.dod.internet.security.mechanisms.8.2.2 certificate template/profile: IPSECIntermediateOffline pre-save command: post-save command: track: yes auto-renew: yes
状态 MONITORING 表示成功检索发布的证书。getcert-list (1) 手册页列出了其他可能的状态及其含义。