Red Hat Training

A Red Hat training course is available for RHEL 8

76.4. 使用 certmonger 为服务获取 IdM 证书

为确保浏览器和在 IdM 客户端上运行的 Web 服务之间的通信安全且加密,请使用 TLS 证书。如果要将 Web 浏览器限制为信任 webserver-ca 子 CA 发布但没有其它 IdM 子 CA 发布的证书,请从 webserver-ca 子 CA 获取 Web 服务的 TLS 证书。

按照以下流程,使用 certmonger 获取在 IdM 客户端上运行的服务(HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM)的 IdM 证书。

使用 证书监控 器自动请求证书意味着,certmonger 在到期需要续订时管理和续订证书。

有关 certmonger 请求服务证书时发生的情况的可视化表示,请参阅 请求服务证书的 certmonger 的通信流

先决条件

  • Web 服务器已注册为 IdM 客户端。
  • 您有正在运行的 IdM 客户端的 root 访问权限。
  • 请求证书的服务不必在 IdM 中预先存在。

流程

  1. 在运行 HTTP 服务的 my_company.idm.example.com IdM 客户端中,请求与 HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM 主体对应的服务的证书,并指定:

    • 证书将存储在本地 /etc/pki/tls/certs/httpd.pem 文件中
    • 私钥存储在本地 /etc/pki/tls/private/httpd.key 文件中
    • The webserver-ca 子 CA 将作为发行证书颁发机构
    • SubjectAltName 的 extensionRequest 添加到签名请求中,其 DNS 名称为 my_company.idm.example.com

      # ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -X webserver-ca -C "systemctl restart httpd"
      New signing request "20190604065735" added.

      在以上命令中:

      • ipa-getcert request 命令指定要从 IdM CA 获取证书。ipa-getcert request 命令是 getcert request -c IPA 的快捷方式。
      • g 选项指定要生成的密钥的大小(如果尚未到位)。
      • D 选项指定 要添加到请求的 SubjectAltName DNS 值。
      • X 选项指定 证书的签发者必须是 webserver-ca, 而不是 ipa
      • C 选项 指示 certmonger 在获取证书后重新启动 httpd 服务。
      • 要指定证书与特定的配置集一起发布,请使用 -T 选项。
      注意

      RHEL 8 在 Apache 中使用与 RHEL 7 中使用的不同的 SSL 模块。SSL 模块依赖于 OpenSSL 而不是 NSS。因此,在 RHEL 8 中,您无法使用 NSS 数据库存储 HTTPS 证书和私钥。

  2. (可选)检查请求的状态:

    # ipa-getcert list -f /etc/pki/tls/certs/httpd.pem
    Number of certificates and requests being tracked: 3.
    Request ID '20190604065735':
        status: MONITORING
        stuck: no
        key pair storage: type=FILE,location='/etc/pki/tls/private/httpd.key'
        certificate: type=FILE,location='/etc/pki/tls/certs/httpd.crt'
        CA: IPA
        issuer: CN=WEBSERVER,O=IDM.EXAMPLE.COM
    
    [...]

    输出显示请求处于 MONITORING 状态,这表示已获取了证书。密钥对和证书的位置是请求的位置。