Menu Close
Settings Close

Language and Page Formatting Options

15.8.2. 通过 SCEP 请求 IdM CA 签名证书

以下示例将 SCEP_example SCEP CA 配置添加到 certmonger,并在 client.idm.example.com IdM 客户端上请求新证书。certmonger 支持 NSS 证书数据库格式和基于文件的(PEM)格式,如 OpenSSL。

先决条件

  • 您知道 SCEP URL。
  • 您有 challengePassword PIN 共享 secret。

流程

  1. 将 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 格式副本的位置。

  2. 验证 CA 配置是否已成功添加:

    [root@client.idm.example.com ~]# getcert list-cas -c SCEP_example
    CA '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 链在命令输出中显示为 thumbprints。当通过未加密的 HTTP 访问服务器时,手动将 thumbprints 与 SCEP 服务器中显示的 thumbprints 进行比较,以防止 man-in-the-middle 攻击。

  3. 从 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 :证书 Nickname,在 NSS 数据库中使用。
      • -n: CSR 中的 Subject 名称。
      • -L : CA 发布时限一次性 质询Password PIN。
      • - 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 中的 Subject 名称。
      • -L : CA 发布时限一次性 质询Password PIN。
      • - d:证书的主题备用名称,通常与主机名相同。

验证

  1. 验证证书是否已颁发并正确存储在本地数据库中:

    • 如果您使用了 NSS,请输入:

      [root@client.idm.example.com ~]# getcert list -I Example_Task
      	Request 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: yes
      	auto-renew: yes
    • 如果使用 OpenSSL,请输入:

      [root@client.idm.example.com ~]# getcert list -I Example_Task
      Request 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: yes
             auto-renew: yes

      状态 MONITORING 表示成功检索签发的证书。getcert-list(1) man page 列出了其他可能的状态及其含义。

其他资源

  • 有关请求证书时的更多信息,请参阅 getcert-request(1) man page。