25.8.2. 通过 SCEP 请求一个 IdM CA 签名的证书
以下示例将 SCEP_example SCEP CA 配置添加到 certmonger,并在 client.idm.example.com IdM 客户端上请求一个新证书。certmonger 支持 NSS 证书数据库格式和基于文件的(PEM)格式,如 OpenSSL。
先决条件
- 您知道 SCEP URL。
-
您有
challengePasswordPIN 共享 secret。
流程
将 CA 配置添加到
certmonger:[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL-
-c: CA 配置的强制别名。稍后可以将相同的值用于其他getcert命令。 -u:服务器的 SCEP 接口的 URL。重要使用 HTTPS URL 时,还必须使用
-R选项指定 SCEP 服务器 CA 证书的 PEM 格式的副本的位置。
-
验证 CA 配置是否已成功添加:
[root@client.idm.example.com ~]# getcert list-cas -c SCEP_exampleCA 'SCEP_example': 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如果成功添加了配置,certmonger 会从远程 CA 检索 CA 链。然后,CA 链以指纹的形式显示在命令输出中。当通过未加密的 HTTP 访问服务器时,手动将指纹与 SCEP 服务器中显示的指纹进行比较,以防止中间人攻击。
从 CA 请求一个证书:
如果您在使用 NSS:
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com您可以使用选项来指定证书请求的以下参数:
-
-I: 可选:任务的名称:请求的跟踪 ID。稍后可以将相同的值用于getcert list命令。 -
-c:将请求提交给的 CA 配置。 -
-d:包含 NSS 数据库的目录,以存储证书和密钥。 -
-n:证书的别名,在 NSS 数据库中使用。 -
-n: CSR 中的主题名称。 -
-L:CA 发布的一次性时间限制的challengePasswordPIN。 -
-D:证书的主题备用名称,通常与主机名相同。
-
如果您在使用 OpenSSL:
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com您可以使用选项来指定证书请求的以下参数:
-
-I: 可选:任务的名称:请求的跟踪 ID。稍后可以将相同的值用于getcert list命令。 -
-c:将请求提交给的 CA 配置。 -
-f:到证书的存储路径。 -
-k:到密钥的存储路径。 -
-n: CSR 中的主题名称。 -
-L:CA 发布的一次性时间限制的challengePasswordPIN。 -
-D:证书的主题备用名称,通常与主机名相同。
-
验证
验证证书是否已颁发,并正确存储在本地数据库中:
如果您使用了 NSS,请输入:
[root@client.idm.example.com ~]# getcert list -I Example_TaskRequest ID 'Example_Task': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB' certificate: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB' signing request thumbprint (MD5): 503A8EDD DE2BE17E 5BAA3A57 D68C9C1B signing request thumbprint (SHA1): B411ECE4 D45B883A 75A6F14D 7E3037F1 D53625F4 CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=client.idm.example.com,O=EXAMPLE.COM 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: true auto-renew: true如果您使用了 OpenSSL,请输入:
[root@client.idm.example.com ~]# getcert list -I Example_TaskRequest ID 'Example_Task': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/private.key' certificate: type=FILE,location='/etc/pki/tls/certs/server.crt' CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=client.idm.example.com,O=EXAMPLE.COM expires: 2018-05-06 10:28:06 UTC eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: post-save command: track: true auto-renew: true状态 MONITORING 表示成功检索了签发的证书。
getcert-list(1)手册页列出了其他可能的状态及其含义。