7.8. SubCA の作成と設定 (パート II)


このセクションでは、OCSP インスタンスがインストールされていることを前提として、SubCA のインストールを続行します。これは、SubCA のロールユーザー証明書と TLS サーバー証明書に、OCSP インスタンスを指す AIA 拡張が含まれるようにするためです。

7.8.1. ブートストラップ以外のエージェントユーザー証明書の発行

このセクションでは、SubCA のブートストラップ管理者証明書を使用して、PKI エージェントのロールの特権に制限されている証明書 rsa_SubCA_AgentV (エージェントユーザー jsmith 用) を発行します。この証明書は、今後の CMC 証明書要求の承認に使用できます。

前提条件

  • root ユーザーとして rhcs10.example.com にログインしている。

pki エージェントユーザーのエージェント証明書の作成

  1. 「エージェントユーザー」 で説明されている手順に従って、pki エージェントユーザー (jsmith など) に対して発行されたエージェント証明書 (この例では rsa_SubCA_AgentV) を取得します。注: そのパートの冒頭で説明したように、単に製品をテスト/評価する場合は、便宜上、root 以外のユーザー (jsmith など) を使用する代わりに、同じ証明書データベースで rsa_SubCA_AgentV の CSR を生成できます。root としてブートストラップユーザー (/root/.dogtag/pki_rsa_bootstrap/certs_db) の証明書を使用し、さらに証明書を同じ certdb にインポートして使用します。それを選択した場合は、以下の手順に従って user/certs_db に置き換えてください。

検証:

  1. インストールされている SubCA のステータスを表示します。

    # pki-server status rhcs10-RSA-SubCA
    Copy to clipboard

    Secure Agent、Admin、および pkiconsole の URL を書き留めます。

  2. 新しい SubCA 管理者証明書が正常に追加されたことを確認するために健全性テストを実行します。

    1. まず、「CRL 公開のテスト」 で作成した user1 証明書のシリアル番号を見つけます。

      # pki -p 31443 -h rhcs10.example.com ca-cert-find --uid user1
      Copy to clipboard
    2. SubCA エージェントの認証情報を使用して、user1 の証明書を保留にします。

      # pki -d /home/jsmith/certs_db -n rsa_SubCA_AgentV -p 31443 -h rhcs10.example.com ca-cert-hold <user1 serial number>
      Copy to clipboard
  3. rhcs10.example.com で SubCA の EE ページにアクセスできることを確認します。

7.8.2. 一時 DS 証明書を置き換える (SubCA)

SubCA のインストールが完了すると、Directory Server の公式 SSL サーバー証明書を発行して、一時的な証明書を置き換えることができます。Directory Server 証明書の証明書署名要求 (CSR) を作成し、SubCA エージェントユーザー (rsa_SubCA_AgentV) の認証情報を使用してこの要求を CA に送信します。

注記

必ず DS サーバーの FQDN (例: cn=rhds11.example.com / host=rhds11.example.com) を使用してください。

実際の DS 証明書の CSR を生成する

rhds11.example.com で、実際の DS 証明書の PKCS10 証明書署名要求を生成します。

  1. DS を停止します。

    # dsctl slapd-CC-RSA-SubCA-LDAP stop
    Copy to clipboard
  2. certutil ツールを使用して CSR を生成します。

    # certutil -R -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP -s "CN=rhds11.example.com" -g 2048 -f /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/pwdfile.txt -a -o /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/Server-Cert-subca.csr -z /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/noise.txt
    Copy to clipboard
    重要

    上記で取得した Server-Cert-subca.csr 出力ファイルを編集して、"Begin Certificate Request" の前の数行を削除します。以下に例を示します。

    # vi /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/Server-Cert-subca.csr
    Copy to clipboard

    CSR ファイルは、"-----BEGIN CERTIFICATE REQUEST-----" の行で始まり、"-----END CERTIFICATE REQUEST-----" の行で終わる必要があります。

  3. DS を起動します。

    # dsctl slapd-CC-RSA-SubCA-LDAP start
    Copy to clipboard
  4. Server-Cert-subca.csr ファイルを CA が存在するシステムにリモートコピーします。以下に例を示します。

    # scp /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/Server-Cert-subca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-subca.csr
    Copy to clipboard

実際の DS 証明書を発行する

rhcs10.example.com で、実際の SSL サーバー証明書を発行します。

  1. CMC 要求を生成します。

    1. CMCRequest 設定ファイルを作成します。以下に例を示します。

      # vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.cfg
      Copy to clipboard
      ### numRequests: Total number of PKCS10 requests or CRMF requests.
      numRequests=1
      
      ### input: full path for the PKCS10 request or CRMF request,
      ### The content must be in Base-64 encoded format.
      ### Multiple files are supported. They must be separated by a space.
      ### For input on a different host, specify where to find the CSR.
      input=/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-subca.csr
      
      ### output: full path for the CMC request in binary format
      ### For output on a different host, specify the destination.
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.req
      
      ### tokenname: name of the token where the agent signing cert can be found (default is internal)
      tokenname=internal
      
      ### nickname: nickname for the agent certificate that will be used to sign the CMC full request.
      nickname=PKI Bootstrap Administrator for RSA-SubCA
      
      ### dbdir: directory for cert8.db, key3.db and secmod.db
      dbdir=/root/.dogtag/pki_rsa_bootstrap/certs_db
      
      ### password: password for cert8.db that stores the agent certificate
      password=SECret.123
      
      ### format: request format, either pkcs10 or crmf
      format=pkcs10
      Copy to clipboard
    2. CMCRequest コマンドを使用してリクエストを生成します。

      # CMCRequest /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.cfg
      
      cert/key prefix =
      path = /root/.dogtag/pki_rsa_bootstrap/certs_db
      CryptoManger initialized
      token internal logged in...
      got signerCert: PKI Bootstrap Administrator for RSA-SubCA
      createPKIData: begins
      k=0
      createPKIData:  format: pkcs10
      useSharedSecret is false...
      signData: begins:
      getPrivateKey: got signing cert
      signData:  got signer privKey
      createSignedData: begins
      getSigningAlgFromPrivate: begins.
      getSigningAlgFromPrivate: found signingKeyType=RSA
      getSigningAlgFromPrivate: using SignatureAlgorithm: RSASignatureWithSHA256Digest
      createSignedData: digest created for pkidata
      createSignedData: digest algorithm =RSASignatureWithSHA256Digest
      createSignedData: building cert chain
      signData: signed request generated.
      getCMCBlob: begins
      getCMCBlob: generating signed data
      
      The CMC enrollment request in base-64 encoded format:
      
      . . . Output omitted . . .
      
      The CMC enrollment request in binary format is stored in
      /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.req
      Copy to clipboard
  2. CMC 要求を送信します。

    1. HttpClient 設定ファイルを作成します。以下に例を示します。

      # vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-subca.cfg
      Copy to clipboard
      ### host: host name for the http server
      host=rhcs10.example.com
      
      ### port: port number
      port=31443
      
      ### secure: true for secure connection, false for nonsecure connection
      secure=true
      
      ### input: full path for the enrollment request, the content must be in binary format
      input=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.req
      
      ### output: full path for the response in binary format
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.resp
      
      ### tokenname: name of the token where the SSL client authentication cert can be found (default is internal)
      ### This parameter will be ignored if secure=false
      tokenname=internal
      
      ### dbdir: directory for cert8.db, key3.db and secmod.db
      ### This parameter will be ignored if secure=false
      dbdir=/root/.dogtag/pki_rsa_bootstrap/certs_db
      
      ### clientmode: true for client authentication, false for no client authentication
      ### This parameter will be ignored if secure=false
      clientmode=true
      
      ### password: password for cert8.db
      ### This parameter will be ignored if secure=false and clientauth=false
      password=SECret.123
      
      ### nickname: nickname for client certificate
      ### This parameter will be ignored if clientmode=false
      nickname=PKI Bootstrap Administrator for RSA-SubCA
      
      ### servlet: servlet name
      servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCserverCertWithCRLDP
      Copy to clipboard
      注記

      EC 証明書の場合は、次のように設定して ECC プロファイルを使用します。

      servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCECserverCertWithCRLDP
      Copy to clipboard
    2. HttpClient コマンドを使用して要求を送信します。

      # HttpClient /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-subca.cfg
      
      Total number of bytes read = 3096
      after SSLSocket created, thread token is NSS FIPS 140-2 User Private Key
      client cert is not null
      handshake happened
      writing to socket
      
      ##Response Headers begin##
      HTTP/1.1 200
      Content-Type: application/pkcs7-mime
      Content-Length: 2492
      Date: Tue, 29 Sep 2020 15:20:21 GMT
      Connection: close
      ##end##
      
      . . . Output omitted . . .
      
      The response in binary format is stored in
      /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.resp
      Copy to clipboard
  3. CMC 応答を処理します。

    1. CMCResponse を使用して応答を処理し、チェーン内のすべての証明書を PEM 形式で個別に表示します。

      重要

      "-v" オプションを指定して CMCResponse を実行すると、チェーン内の各証明書の PEM が Cert:0、Cert:1 などとして返されます。この出力では、すべての PEM の下に、チェーン内の各証明書も整った出力形式で表示されます。証明書は決まった順序で表示されないため、チェーン内での位置を確認するには、各 "Certificate" の下にある "Subject:" を確認する必要があります。対応する PEM が上と同じ位置に表示されます。

      # CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-subca_pkcs10.resp -v
      
      Cert:0
      ...
      ===
      Cert:1
      ...
      ===
      Cert:2
      ...
      ===
      Certificates:
          Certificate:
              Data:
                  Version:  v3
                  Serial Number: 0xA383694
                  Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                  Issuer: CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-SubCA
                  Validity:
                      Not Before: Tuesday, April 5, 2022 8:41:36 AM EDT America/New_York
                      Not  After: Monday, March 25, 2024 8:41:36 AM EDT America/New_York
                  Subject: CN=rhds11.example.com
      
      . . . Output omitted . . .
      
          Certificate:
              Data:
                  Version:  v3
                  Serial Number: 0x5C8FAD4
                  Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                  Issuer: CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA
                  Validity:
                      Not Before: Tuesday, April 5, 2022 8:36:21 AM EDT America/New_York
                      Not  After: Saturday, April 5, 2042 8:36:21 AM EDT America/New_York
                  Subject: CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA
      
      . . . Output omitted . . .
      
          Certificate:
              Data:
                  Version:  v3
                  Serial Number: 0x80296C3
                  Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                  Issuer: CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-SubCA
                  Validity:
                      Not Before: Tuesday, April 5, 2022 8:39:43 AM EDT America/New_York
                      Not  After: Friday, April 5, 2041 8:39:43 AM EDT America/New_York
                  Subject: CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA
      
      . . . Output omitted . . .
      
      Number of controls is 1
      Control #0: CMCStatusInfoV2
      OID: {1 3 6 1 5 5 7 7 25}
      BodyList: 1
      Status: SUCCESS
      CMC Full Response.
      Copy to clipboard
    2. 新しい Server-Cert DS 証明書を、適切な名前でブートストラップ証明書ディレクトリー (例: /root/.dogtag/pki_rsa_bootstrap/certs_db/) 内のファイルに保存します。.pem ファイルは、ヘッダー -----BEGIN CERTIFICATE----- で開始し、フッター -----END CERTIFICATE----- で終了する必要があります。以下に例を示します。

      # vi /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-subca.pem
      Copy to clipboard

      この場合の Server-Cert-subca.pem は、SubCA の内部データベースとして機能する Directory Server インスタンスの新しい Server-Cert 証明書です。

      注記

      RootCA の署名証明書は、次のコマンドからの出力と一致する必要があります。

      # certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA" -a
      Copy to clipboard
  4. 新しい Server-Cert 証明書を rhds11.example.com にリモートコピーします。以下に例を示します。

    # scp /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-subca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/
    Copy to clipboard

一時 DS 証明書を置き換える

rhds11.example.com で、一時的な DS 証明書を実際の DS 証明書に置き換えます。

  1. SubCA の LDAP インスタンスを停止します。

    # dsctl slapd-CC-RSA-SubCA-LDAP stop
    Copy to clipboard
  2. dirsrv ディレクトリーの内容をバックアップディレクトリーに保存します。

    # cp -r /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-SubCA-LDAP/
    Copy to clipboard
  3. 古い DS 証明書を削除します。

    # certutil -D -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/pwdfile.txt -n "Server-Cert"
    Copy to clipboard
    # certutil -D -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/pwdfile.txt -n "Self-Signed-CA"
    Copy to clipboard
  4. 新しく作成した DS 証明書とそのチェーン内の CA 証明書を 1 つずつインポートします。以下に例を示します。

    # certutil -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-RootCA" -i /opt/pki_rsa/rootCA.pem
    Copy to clipboard
    # certutil -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-SubCA" -i /opt/pki_rsa/subCA.pem
    Copy to clipboard
    # certutil -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/Server-Cert-subca.pem
    Copy to clipboard
  5. 証明書をリスト表示します。

    # certutil -L -d /etc/dirsrv/slapd-CC-RSA-SubCA-LDAP/
    
    Certificate Nickname                         Trust Attributes
                                                 SSL,S/MIME,JAR/XPI
    CA Signing Cert - rhcs10-RSA-RootCA          CT,C,C
    CA Signing Cert - rhcs10-RSA-SubCA           CT,C,C
    Server-Cert                                  u,u,u
    Copy to clipboard
  6. DS を起動します。

    # dsctl slapd-CC-RSA-SubCA-LDAP start
    Copy to clipboard
  7. LDAP サーバーが稼働していることをテストして確認します (別のシステムの場合は、CA ホストでもテストします)。

    # ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:7636 -b "dc=example,dc=com" -w SECret.123
    Copy to clipboard

    別のシステムでテストする場合は、次のように CA 証明書チェーンを ldapsearch コマンドの前に追加します。

    # LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:7636 -b "dc=example,dc=com" -w SECret.123
    Copy to clipboard

SubCA インスタンスの一時 DS 証明書の信頼を削除する

rhcs10.example.com で、SubCA インスタンスデータベースから一時 DS 証明書を削除します。

  1. SubCA を停止します。

    # pki-server stop rhcs10-RSA-SubCA
    Copy to clipboard
  2. 証明書をリスト表示します。

    # certutil -L -d /var/lib/pki/rhcs10-RSA-SubCA/alias/
    
    Certificate Nickname                    Trust Attributes
                                            SSL,S/MIME,JAR/XPI
    DS temp CA certificate                  CT,C,C
    ...
    Copy to clipboard
  3. nssdb から一時証明書を削除します。

    # certutil -D -d /var/lib/pki/rhcs10-RSA-SubCA/alias/ -n "DS temp CA certificate"
    Copy to clipboard

証明書失効チェックを有効にする

Directory Server 証明書の置き換えが完了しているため、証明書失効チェックを有効にすると、CA の起動時に CRL 配布ポイントが検出されます。

  1. 証明書失効チェックを有効にするには、それぞれの /var/lib/pki/rhcs10-RSA-SubCA/conf/server.xml ファイルで以下を実行します。

    1. enableOCSP または enableRevocationChecktrue に設定します。

      enableOCSP=true
      or
      enableRevocationCheck=true
      Copy to clipboard
    2. さらに、次の 2 つのパラメーターと割り当てられた値を削除します。

      ocspResponderURL
      ocspResponderCertNickname
      Copy to clipboard
  2. CA の CS.cfg ファイルを編集し、以下を false に設定して、従来の失効チェック方法を無効にします。

    auths.revocationChecking.enabled=false
    Copy to clipboard
  3. SubCA インスタンスを起動します。

    # pki-server start rhcs10-RSA-SubCA
    Copy to clipboard

CRL 配布ポイントの検証

プロファイル caCMCserverCertWithCRLDP を使用して下位 CA のディレクトリーサーバーの server-cert を置き換えたため、起動時に CA が内部ディレクトリーサーバーとの接続を開始するときに、CRL 配布ポイントが CA によって参照されるようになります。

このセクションでは、CA の CRL 配布ポイントの設定を確認するための基本的な方法を説明します (「CRL 配布ポイントのサポートを設定する」)。

  1. ファイルベースの CRL の公開を確認します。

    #  ls -l /var/lib/pki/rhcs10-RSA-SubCA/crl
    total 4
    -rw-r--r--. 1 pkiuser pkiuser 573 Jun 21 18:43 ServerCertCRL-20240621-175339.der
    lrwxrwxrwx. 1 pkiuser pkiuser  67 Jun 21 18:43 ServerCertCRL.crl -> /var/lib/pki/rhcs10-RSA-SubCA/crl/ServerCertCRL-20240621-175339.der
    Copy to clipboard
  2. CRL の内容を表示し、検証します。

    # BtoA /var/lib/pki/rhcs10-RSA-SubCA/crl/ServerCertCRL.crl /var/lib/pki/rhcs10-RSA-SubCA/crl/ServerCertCRL.bin
    # PrettyPrintCrl /var/lib/pki/rhcs10-RSA-SubCA/crl/ServerCertCRL.bin
        Certificate Revocation List:
            Data:
                Version:  v2
                Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                Issuer: CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA
                This Update: Friday, June 21, 2024 5:53:39 PM EDT America/New_York
                Next Update: Friday, June 21, 2024 9:00:00 PM EDT America/New_York
                Revoked Certificates:
            Extensions:
                Identifier: CRL Number - 2.5.29.20
                    Critical: no
                    Number: 4
            Signature:
                Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                Signature:
                    9E:8A:E1:38:C4:B8:EF:E0:34:2A:92:2D:96:F2:7C:DF:
                    71:F8:4E:8E:EF:AD:C1:CA:65:86:BD:27:45:1C:7E:DD:
                    32:E6:16:94:83:E9:83:3F:24:1F:A1:89:74:7E:70:B6:
                    04:20:36:7F:45:9C:A9:6C:7D:63:37:A3:9F:FD:F2:E1:
                    CE:64:FA:D8:75:82:09:42:AB:B6:83:73:40:1A:C7:98:
                    53:BC:65:81:3C:C3:71:D2:12:F9:A6:EA:00:80:B7:D8:
                    A9:56:37:CD:CF:B9:59:64:B1:7F:31:39:16:11:1C:DC:
                    93:64:87:F9:97:CC:EF:58:23:92:77:FC:2E:22:3A:57:
                    AA:D7:7B:D1:1E:2B:3F:AE:FF:17:1A:62:C4:0C:A0:1E:
                    0D:68:00:C4:68:4C:B5:27:4D:4B:DB:33:17:AC:8C:DF:
                    8D:FE:77:EE:B9:B1:17:55:8F:42:A2:5C:84:1B:6F:B8:
                    82:A6:F6:6E:E9:10:37:50:94:C4:33:D3:3C:18:22:7C:
                    D6:6E:5E:89:34:E1:55:F5:80:F6:8F:B9:49:AE:A0:86:
                    2E:B5:8A:B1:00:8C:B0:4C:81:37:A6:BA:D1:7D:77:81:
                    F3:68:6C:16:D6:0A:BA:E7:F6:65:4F:44:A1:5B:31:0F:
                    C2:F7:F9:FE:DC:55:BA:38:F2:AE:AA:34:9E:D0:7D:64:
                    E1:90:68:E2:68:DE:C9:D0:90:26:56:6B:3A:74:AF:E8:
                    CA:55:AE:E8:A1:DF:81:D1:E4:C8:46:DD:E3:12:6D:46:
                    BE:A5:F2:C4:12:4E:15:D5:0F:30:10:3D:77:62:A2:41:
                    F6:85:77:6F:EF:5C:78:0C:FE:F1:C5:4B:C5:C4:69:B5:
                    84:0A:7B:4B:E3:D7:39:9A:66:43:AB:E9:DD:25:8E:EA:
                    58:2F:AD:1D:D4:CD:1A:EE:50:73:B2:0C:F1:29:67:B3:
                    2D:49:E1:54:95:51:9A:36:82:C3:D2:3F:32:7E:73:20:
                    86:0F:28:6F:CC:89:9F:DF:4A:A9:64:CD:30:4A:80:EE
    Copy to clipboard
重要

CRL ファイル (ソフトリンクファイル ServerCertCRL.crl と、それに関連付けられた der ファイル) は削除しないでください。

CRL ファイルが見つからない、または誤って /var/lib/pki/rhcs10-RSA-SubCA/crl/ から削除されているため CA が起動できない状況が発生した場合は、以下の手順に従って CRL ファイルを再生成します。

  1. CA サービスを停止します。

    # pki-server stop rhcs10-RSA-SubCA
    Copy to clipboard
  2. CA の server.xml で、enableRevocationCheck または enableOCSP パラメーターを false に設定します (現在 true に設定されている場合)。
  3. CA の CS.cfgca.crl.ServerCertCRL.publishOnStart= パラメーターを true に設定します。
  4. 欠落している CRL ファイルを再生成するには、CA サービスを開始します。

    # pki-server start rhcs10-RSA-SubCA
    Copy to clipboard
  5. CRL ファイルを復元した後、CA サービスをもう一度停止します。
  6. CA の CS.cfgca.crl.ServerCertCRL.publishOnStart= パラメーターを false に戻します。
  7. CA の server.xmlenableRevocationCheck または enableOCSP パラメーターを true に設定します。
  8. 変更を適用するには、CA サービスを再度開始します。

これらの手順に従うことで、欠落している CRL ファイルが正常に復元され、CA が正しく起動されます。

CA が機能していることを確認する

  1. CA に証明書をリスト表示します。

    # pki -p 31443 ca-cert-find
    Copy to clipboard
  2. ブートストラップ管理ユーザーとして、SubCA にユーザーをリストします。

    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db/ -c SECret.123 -p 31443 -n "PKI Bootstrap Administrator for RSA-SubCA" ca-user-find
    Copy to clipboard

7.8.3. SubCA pkiconsole タイムアウト時間の延長

rhcs10.example.com の場合:

  1. SubCA を停止します。

    # pki-server stop rhcs10-RSA-SubCA
    Copy to clipboard
  2. /var/lib/pki/rhcs10-RSA-SubCA/conf/server.xml を編集して、タイムアウトの時間を増やします。

    <Connector name="Secure" port="31443" …
    connectionTimeout="3000000"
    Copy to clipboard
  3. SubCA を開始します。

    # pki-server start rhcs10-RSA-SubCA
    Copy to clipboard

7.8.4. CMC 共有シークレット認証の設定

CMC 共有シークレット認証を使用すると、エージェントによる手動操作なしで、証明書の発行ユーザーを事前に承認できます。設定には以下が必要です。

  • このような認証に使用する LDAP の指定に使用する、CA の CS.cfg にある情報
  • 認証方法の有効化
  • 共有秘密を保護するメカニズムとして機能する発行保護証明書の作成
注記

CMC SharedToken 機能では、OAEP を使用して CA 側で AES キーをラッピング/アンラッピングする必要があります。CA が使用する HSM がアルゴリズムをサポートしておらず、CMC 共有トークン機能を使用する必要がある場合は、内部暗号トークン (nssdb) でキーのラッピング/アンラッピングが実行されるように設定することが推奨されます。その場合、「発行保護証明書の追加」 の 3 つの違いに注意してください。

  • nssdb に発行保護証明書の CSR を生成します。

    # PKCS10Client -d /var/lib/pki/rhcs10-RSA-SubCA/alias -a rsa -l 2048 -n "CN=IssuanceProtectionSystemCert" -w -o /root/.dogtag/pki_rsa_bootstrap/certs_db/IssuanceProtectionSystemCert.csr
    Copy to clipboard
  • 発行保護証明書を nssdb にインポートします。

    # certutil -A -d /var/lib/pki/rhcs10-RSA-SubCA/alias -i /root/.dogtag/pki_rsa_bootstrap/IssuanceProtectionSystemCert.pem -n "IssuanceProtectionSystemCert" -t ""
    Copy to clipboard
  • CS.cfg を編集して発行保護証明書のニックネームを設定するように指示された場合: ca.cert.issuance_protection.nickname=IssuanceProtectionSystemCert

7.8.4.1. CMC 共有トークンの設定

このセクションでは、LDAP およびプロファイルの有効化に特化した CMC 共有トークン認証の設定を説明します。

手順

rhcs10.example.com の場合:

  1. SubCA を停止します。

    # pki-server stop rhcs10-RSA-SubCA
    Copy to clipboard
  2. 任意の手順: shrTok 属性を LDAP に追加するには、ldapmodify コマンドを使用して、各対話型プロンプト > で必要な情報を入力します。以下に例を示します。

    # LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapmodify -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:7636 -w SECret.123 << EOF
    
    > dn: cn=schema
    > changetype: modify
    > add: attributetypes
    > attributetypes: ( 2.16.840.1.117370.3.1.123 NAME 'shrTok' DESC 'User Defined ObjectClass for SharedToken' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE X-ORIGIN 'custom for sharedToken')
    > EOF
    
    modifying entry "cn=schema"
    Copy to clipboard
  3. /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg を編集して次のプロパティーを設定することにより、SharedToken 認証プラグインを追加します。

    auths.instance.SharedToken.ldap.basedn=dc=example,dc=com
    auths.instance.SharedToken.ldap.ldapauth.authtype=BasicAuth
    auths.instance.SharedToken.ldap.ldapauth.bindDN=cn=Directory Manager
    auths.instance.SharedToken.ldap.ldapauth.bindPWPrompt=Rule SharedToken
    auths.instance.SharedToken.ldap.ldapconn.host=rhds11.example.com
    auths.instance.SharedToken.ldap.ldapconn.port=7636
    auths.instance.SharedToken.ldap.ldapconn.secureConn=true
    auths.instance.SharedToken.pluginName=SharedToken
    auths.instance.SharedToken.shrTokAttr=shrTok
    Copy to clipboard
  4. CMC キーラッピングに HSM を使用するように SubCA を設定します。

    1. /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg を編集して、cmc.token=NHSM-CONN-XC を設定します。
    2. keyWrap.useOAEP = true のエントリーも追加します。
  5. 次のように設定して、自己署名登録用の CMC 共有トークン登録プロファイルを有効にします。

    1. 登録プロファイル caFullCMCSharedTokenCert.cfg が有効になっていることを確認します (enable=true)。以下に例を示します。

      # cat /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caFullCMCSharedTokenCert.cfg | grep enable=
      
      enable=true
      Copy to clipboard
    2. これが enable=false となっている場合には、caFullCMCSharedTokenCert.cfg を編集して enable=true に変更します。
  6. SubCA を起動して変更を適用します。

    # pki-server start rhcs10-RSA-SubCA
    Copy to clipboard

7.8.4.2. 発行保護証明書の追加

CMC 共有トークン認証には追加の設定として、CA にインポートする 発行保護証明書 を生成する必要があります。

注記

ただし、発行保護証明書は RSA 証明書である必要があります。

発行保護証明書の証明書要求の生成

  1. root として、rhcs10.example.com にログインします。
  2. PKCS10Client ツールを使用して、PKCS10 証明書要求を生成します。

    # echo "<YourHSMpassword>" > /root/.dogtag/pki_rsa_bootstrap/certs_db/hsm_pass.txt
    Copy to clipboard
    # PKCS10Client -d /var/lib/pki/rhcs10-RSA-SubCA/alias -h NHSM-CONN-XC -P /root/.dogtag/pki_rsa_bootstrap/certs_db/hsm_pass.txt -a rsa -l 2048 -n "CN=IssuanceProtectionSystemCert" -w -o /root/.dogtag/pki_rsa_bootstrap/certs_db/IssuanceProtectionSystemCert.csr
    
    CryptoUtil: generateRSAKeyPair: calling kg.setKeyPairUsages
    PKCS10Client: Certificate request written into /root/.dogtag/pki_rsa_bootstrap/certs_db/IssuanceProtectionSystemCert.csr
    PKCS10Client: PKCS#10 request key id written into /root/.dogtag/pki_rsa_bootstrap/certs_db/IssuanceProtectionSystemCert.csr.keyId
    Copy to clipboard
  3. 結果の証明書要求 /root/.dogtag/pki_rsa_bootstrap/certs_db/IssuanceProtectionSystemCert.csr を pki エージェント (jsmith など) に送信します。

    注記

    このセクションの冒頭 (「ブートストラップ以外のエージェントユーザー証明書の発行」) で、便宜上の理由で SubCA エージェントの証明書を jsmith の nssdb ではなく /root/.dogtag/pki_rsa_bootstrap/certs_db/ にインポートすることを選択した場合は、この手順をスキップし、root ユーザーとして以下の手順を実行できます。

発行保護証明書の発行

  1. rsa_SubCA_AgentV に正しい証明書があることを確認します。次の 2 つのコマンドは、同じ証明書になるはずです。

    # certutil -L -d /home/jsmith/certs_db -n "rsa_SubCA_AgentV" -a
    Copy to clipboard
    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -n "PKI Bootstrap Administrator for RSA-SubCA" -c SECret.123 -h "rhcs10.example.com" -p 31443 ca-user-cert-show rsa_SubCA_AgentV <Cert ID> --encoded
    Copy to clipboard
    注記

    次のコマンドを使用して証明書 ID を取得できます。

    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -n "PKI Bootstrap Administrator for RSA-SubCA" -c SECret.123 -h "rhcs10.example.com" -p 31443 ca-user-cert-find rsa_SubCA_AgentV
    Copy to clipboard
  2. rhcs10.example.comjsmith としてログインします。
  3. 受信した証明書要求ファイル IssuanceProtectionSystemCert.csr を、エージェント自身のディレクトリー (/home/jsmith/certs_db など) に配置します。
  4. CMC 要求を生成します。

    1. CMCRequest 設定ファイルを作成します。以下に例を示します。

      # vi /home/jsmith/certs_db/cmc_IssuanceProtectionSystemCert_pkcs10.cfg
      Copy to clipboard
      ### numRequests: Total number of PKCS10 requests or CRMF requests.
      numRequests=1
      
      ### input: full path for the PKCS10 request or CRMF request,
      ### The content must be in Base-64 encoded format.
      ### Multiple files are supported. They must be separated by a space.
      input=/home/jsmith/certs_db/IssuanceProtectionSystemCert.csr
      
      ### output: full path for the CMC request in binary format
      output=/home/jsmith/certs_db/IssuanceProtectionSystemCert.req
      
      ### tokenname: name of the token where the agent signing cert can be found (default is internal)
      tokenname=internal
      
      ### nickname: nickname for the agent certificate that will be used to sign the CMC full request.
      nickname=rsa_SubCA_AgentV
      
      ### dbdir: directory for cert8.db, key3.db and secmod.db
      dbdir=/home/jsmith/certs_db
      
      ### password: password for cert8.db that stores the agent certificate
      password=SECret.123
      
      ### format: request format, either pkcs10 or crmf
      format=pkcs10
      Copy to clipboard
    2. CMCRequest コマンドを使用してリクエストを生成します。

      # CMCRequest /home/jsmith/certs_db/cmc_IssuanceProtectionSystemCert_pkcs10.cfg
      
      cert/key prefix =
      path = /root/.dogtag/pki_rsa_bootstrap/certs_db
      CryptoManger initialized
      token internal logged in...
      got signerCert: CA agentV
      createPKIData: begins
      k=0
      createPKIData:  format: pkcs10
      PKCS10: PKCS10: begins
      PKCS10: PKCS10: ends
      selfSign is false...
      signData: begins:
      getPrivateKey: got signing cert
      signData:  got signer privKey
      createSignedData: begins
      getSigningAlgFromPrivate: begins.
      getSigningAlgFromPrivate: found signingKeyType=EC
      getSigningAlgFromPrivate: using SignatureAlgorithm: ECSignatureWithSHA512Digest
      createSignedData: digest created for pkidata
      createSignedData: digest algorithm =ECSignatureWithSHA512Digest
      createSignedData: building cert chain
      signData: signed request generated.
      getCMCBlob: begins
      getCMCBlob: generating signed data
      
      The CMC enrollment request in base-64 encoded format:
      
      . . . Output omitted . . .
      
      The CMC enrollment request in binary format is stored in
      /home/jsmith/certs_db/IssuanceProtectionSystemCert.req
      Copy to clipboard
  5. CMC 要求を送信します。

    1. HttpClient 設定ファイルを作成します。以下に例を示します。

      # vi /home/jsmith/certs_db/HttpClient_IssuanceProtectionSystemCert.cfg
      Copy to clipboard
      ### host: host name for the http server
      host=rhcs10.example.com
      
      ### port: port number
      port=31443
      
      ### secure: true for secure connection, false for nonsecure connection
      secure=true
      
      ### input: full path for the enrollment request, the content must be in binary format
      input=/home/jsmith/certs_db/IssuanceProtectionSystemCert.req
      
      ### output: full path for the response in binary format
      output=/home/jsmith/certs_db/IssuanceProtectionSystemCert.resp
      
      ### tokenname: name of the token where the SSL client authentication cert can be found (default is internal)
      ### This parameter will be ignored if secure=false
      tokenname=internal
      
      ### dbdir: directory for cert8.db, key3.db and secmod.db
      ### This parameter will be ignored if secure=false
      dbdir=/home/jsmith/certs_db
      
      ### clientmode: true for client authentication, false for no client authentication
      ### This parameter will be ignored if secure=false
      clientmode=true
      
      ### password: password for cert8.db
      ### This parameter will be ignored if secure=false and clientauth=false
      password=SECret.123
      
      ### nickname: nickname for client certificate
      ### This parameter will be ignored if clientmode=false
      nickname=rsa_SubCA_AgentV
      
      ### servlet: servlet name
      servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCcaIssuanceProtectionCert
      Copy to clipboard
    2. HttpClient コマンドを使用して要求を送信します。

      # HttpClient /home/jsmith/certs_db/HttpClient_IssuanceProtectionSystemCert.cfg
      
      Total number of bytes read = 2210
      after SSLSocket created, thread token is NSS FIPS 140-2 User Private Key
      client cert is not null
      handshake happened
      writing to socket
      Total number of bytes read = 1790
      
      . . . Output omitted . . .
      
      The response in binary format is stored in
      /home/jsmith/certs_db/IssuanceProtectionSystemCert.resp
      Copy to clipboard
  6. CMC 応答を取得します。

    # CMCResponse -d /home/jsmith/certs_db -i /home/jsmith/certs_db/IssuanceProtectionSystemCert.resp -o /home/jsmith/certs_db/IssuanceProtectionSystemCert.crt
    
    Certificates:
        Certificate:
        Data:
        Version:  v3
        Serial Number: 0x37C05EC
        Signature Algorithm: SHA512withRSA - 1.2.840.10045.4.3.2
    
    . . . Output omitted . . .
    
    Number of controls is 1
    Control #0: CMCStatusInfoV2
       OID: {1 3 6 1 5 5 7 7 25}
       BodyList: 1
       Status: SUCCESS
    PKCS#7 now stored in file: /home/jsmith/certs_db/IssuanceProtectionSystemCert.crt
    Copy to clipboard

    シリアル番号を書き留めます。次のコマンドを実行したときに表示されるシリアル番号に一致する必要があります。

    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -p 31443 -n "PKI Bootstrap Administrator for RSA-SubCA" ca-cert-find --name "IssuanceProtectionSystemCert"
    Copy to clipboard
  7. CMC SharedSecret 登録の場合にパスフレーズのラッピングを処理するために、発行保護証明書をエージェント nssdb にインポートします。

    # pki -d /home/jsmith/certs_db -c SECret.123 -n "IssuanceProtectionSystemCert" client-cert-import --cert /home/jsmith/certs_db/IssuanceProtectionSystemCert.crt --trust ",,"
    Copy to clipboard

発行保護証明書の CA へのインポート

  1. 証明書を要求した root ユーザーとして rhcs10.example.com にログインします。
  2. 発行保護証明書をインポートします。

    # pki -p 31443 ca-cert-export <issuance protection cert ID> --output-file /root/.dogtag/pki_rsa_bootstrap/IssuanceProtectionSystemCert.pem
    Copy to clipboard
    # certutil -A -d /var/lib/pki/rhcs10-RSA-SubCA/alias -h NHSM-CONN-XC -P NHSM-CONN-XC -i /root/.dogtag/pki_rsa_bootstrap/IssuanceProtectionSystemCert.pem -n "IssuanceProtectionSystemCert" -t "" -f /root/.dogtag/pki_rsa_bootstrap/certs_db/hsm_pass.txt
    
    certutil: could not change trust on certificate: SEC_ERROR_TOKEN_NOT_LOGGED_IN: The operation failed because the PKCS#11 token is not logged in.
    Copy to clipboard
    注記

    このエラーメッセージは無視してください (BZ#1393668)。

    #  certutil -L -d /var/lib/pki/rhcs10-RSA-SubCA/alias -h NHSM-CONN-XC f /root/.dogtag/pki_rsa_bootstrap/certs_db/hsm_pass.txt
    
    Certificate Nickname                            Trust Attributes
                                                    SSL,S/MIME,JAR/XPI
    
    Enter Password or Pin for NHSM-CONN-XC":
    NHSM-CONN-XC:IssuanceProtectionSystemCert       u,u,u
    ...
    Copy to clipboard
  3. 新しく作成された IssuanceProtectionSystemCert を使用するように SubCA を設定します。

    1. SubCA を停止します。

      # pki-server stop rhcs10-RSA-SubCA
      Copy to clipboard
    2. /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg を編集して
      ca.cert.issuance_protection.nickname=NHSM-CONN-XC:IssuanceProtectionSystemCert を設定します。
    3. SubCA を開始します。

      # pki-server start rhcs10-RSA-SubCA
      Copy to clipboard

7.8.4.3. CMC 共有トークンをテストする

次のテスト手順は、発行保護付きの CMC 共有トークン認証を使用してユーザー証明書を発行することにあります。

ユーザーの共有シークレットを設定する

ディレクトリーマネージャーとして、LDAP ユーザーの CMC 共有トークンを作成します。

  1. 通常の OS ユーザー (例: FooUser123) を作成します。

    # /usr/sbin/useradd -d /home/FooUser123 -s /bin/bash -c "FooUser123" -m FooUser123
    Copy to clipboard
  2. LDAP にユーザーを追加します。たとえば、FooUser123 ユーザーの場合には、ldapadd コマンドで使用する /root/.dogtag/pki_rsa_bootstrap/certs_db/ldap_cc_rsa_user.ldif ファイルを作成します。

    dn: uid=FooUser123,dc=example,dc=com
    objectClass: extensibleobject
    objectclass: inetorgperson
    objectclass: organizationalPerson
    objectClass: person
    objectClass: top
    sn: FooUser123
    uid: FooUser123
    cn: CA FooUser123
    mail: FooUser123@example.com
    givenName: FooUser123
    userPassword: secret
    shrTok:
    Copy to clipboard
    # LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapadd -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:7636 -w SECret.123 -f /root/.dogtag/pki_rsa_bootstrap/certs_db/ldap_cc_rsa_user.ldif
    
    adding new entry "uid=FooUser123,dc=example,dc=com"
    Copy to clipboard
  3. ユーザーの shrTok エントリーを生成します。次の CMCSharedToken コマンドでは:

    • -s パラメーターは、共有シークレット (例: secretShrTokFooUser123) を指定します。これは、自己署名 CMC 登録を実行する通常のユーザーと共有されます。
    • -n パラメーターは、発行保護証明書のニックネームを指定します。

      # CMCSharedToken -d /home/jsmith/certs_db -p SECret.123 -s secretShrTokFooUser123 -o /root/.dogtag/pki_rsa_bootstrap/cmcSharedTok_FooUser123.b64 -n "IssuanceProtectionSystemCert" --oaep
      
      Encrypted Secret Data:
      MIIBJgSCAQBRCvkCYlEm/6ntzKyQ+FUTbj6KrIfCPW8h9mehkmIDgAtp5vvEzkVNaOz2FZiESE6nXJlQbjODVGuN7XN5F+qORSWFVW1ifnumCw+czeO7OHIenEQ3C7XTwnX77RWoxZECv2tfn818TGR3+YLSJXl8LbSX5qDXv8ydpHAi+GJdtpllnbndA5d8XEKmwg0zRPGsMjJ9t40DA1WEqjVTxxShk4QgxgZxcOYutfj1dtEtMrwcyo9+FRO9MMg4iAWigvAVsMfZphBKCQNAoth+Cv7BZiI45Xtlt6RXQ+x6zgabBwrqn2LIvQ2FBwMhDr+IdDrZdZGAlpci9Q8TUN1Km4A+BCAyc0BksAUX9qX8ylyrrfxaijk3AZyfdnCi6nTXLE+N3A==
      
      Storing Base64 secret data into /root/.dogtag/pki_rsa_bootstrap/cmcSharedTok_FooUser123.b64
      Copy to clipboard
  4. 上記の CMCSharedToken 暗号化パスフレーズシークレットデータを LDAP ユーザーの shrTok 属性に追加します。たとえば、次のように /root/.dogtag/pki_rsa_bootstrap/certs_db/ldap_cc_rsa_user_shrtok.ldif ファイルを作成して、ldapmodify コマンドで使用します。

    dn: uid=FooUser123,dc=example,dc=com
    changetype: modify
    replace: shrTok
    shrTok: MIIBJgSCAQBRCvkCYlEm/6ntzKyQ+FUTbj6KrIfCPW8h9mehkmIDgAtp5vvEzkVNaOz2FZiESE6nXJlQbjODVGuN7XN5F+qORSWFVW1ifnumCw+czeO7OHIenEQ3C7XTwnX7RWoxZECv2tfn818TGR3+YLSJXl8LbSX5qDXv8ydpHAi+GJdtpllnbndA5d8XEKmwg0zRGsMjJ9t40DA1WEqjVTxxShk4QgxgZxcOYutfj1dtEtMrwcyo9+FRO9MMg4iAWigvAVsMfZphBKCQNAoth+Cv7BZiI45Xtlt6RXQ+x6zgabBwrqn2LIvQ2FBwMhDr+IdDrZdZGAlpci9Q8UN1Km4A+BCAyc0BksAUX9qX8ylyrrfxaijk3AZyfdnCi6nTXLE+N3A==
    Copy to clipboard
    # LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapmodify -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:7636 -w SECret.123 -f /root/.dogtag/pki_rsa_bootstrap/certs_db/ldap_cc_rsa_user_shrtok.ldif
    Copy to clipboard
    注記

    shrTok の値が .ldif ファイル内の同じ行にあり、"shrTok:" と値の間にスペース 1 つ分、空けるようにしてください。

テスト手順

テストユーザー FooUser123 として、

  1. クライアント nssdb がまだ存在しない場合は、作成します。

    $ pki -d /home/FooUser123/certs_db -c SECret.123 client-init
    Copy to clipboard
  2. CA 信頼チェーンを nssdb にインポートします。

    $ pki -d /home/FooUser123/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-RootCA" --ca-cert /opt/pki_rsa/rootCA.pem
    Copy to clipboard
    $ pki -d /home/FooUser123/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-SubCA" --ca-cert /opt/pki_rsa/subCA.pem
    Copy to clipboard
  3. nssdb の内容をリスト表示します。

    # certutil -d /home/FooUser123/certs_db/ -L
    Copy to clipboard
    Certificate Nickname                    Trust Attributes
                                            SSL,S/MIME,JAR/XPI
    
    CA Signing Cert - rhcs10-RSA-RootCA     CT,C,C
    CA Signing Cert - rhcs10-RSA-SubCA      CT,C,C
    Copy to clipboard
  4. PKCS#10 リクエストを作成します。結果のリクエストと秘密鍵 ID は、次のステップで CMCRequest ファイルで使用されます。

    $ PKCS10Client -d /home/FooUser123/certs_db -p SECret.123 -y true -n "cn=FooUser123, uid=FooUser123, ou=self-signed" -o /home/FooUser123/certs_db/pkcs10.self.req
    Copy to clipboard
  5. 次の手順で使用できるように、秘密鍵 ID を表示します。

    # cat /home/FooUser123/certs_db/pkcs10.self.req.keyId; echo
    Copy to clipboard
  6. CMC 要求を生成します。

    1. 前の手順で取得した PKCS#10 要求と秘密鍵 ID を使用して、CMCRequest 設定ファイルを作成します。以下に例を示します。

      $ vi /home/FooUser123/certs_db/cmc-p10-self.cfg
      Copy to clipboard
      ### numRequests: Total number of PKCS10 requests or CRMF requests.
      numRequests=1
      
      ### input: full path for the PKCS10 request or CRMF request,
      ### The content must be in Base-64 encoded format.
      ### Multiple files are supported. They must be separated by a space.
      input=/home/FooUser123/certs_db/pkcs10.self.req
      
      ### output: full path for the CMC request in binary format
      output=/home/FooUser123/certs_db/cmc.pkcs10.self.req
      
      ### tokenname: name of the token where agent signing cert can be found (default is internal)
      tokenname=internal
      request.useSharedSecret=true
      
      ### nickname: nickname for the agent certificate which will be used to sign the CMC full request.
      #nickname=
      
      ### dbdir: directory for cert8.db, key3.db and secmod.db
      dbdir=/home/FooUser123/certs_db
      
      ### password: password for cert8.db which stores the agent certificate
      password=SECret.123
      
      ### format: request format, either pkcs10 or crmf
      format=pkcs10
      
      ### identityProofV2.enable: if true, then the request will contain this control. Otherwise, false.
      ### Note that if both identityProof and identityProofV2 are enabled,
      ### identityProofV2 takes precedence; Only one of them can be active at a time
      ### Supported hashAlg are:
      ### SHA-256, SHA-384, and SHA-512
      ### Supported macAlg are:
      ### SHA-256-HMAC, SHA-384-HMAC, and SHA-512-HMAC
      identityProofV2.enable=true
      identityProofV2.hashAlg=SHA-512
      identityProofV2.macAlg=SHA-256-HMAC
      
      ### identityProofV2.sharedSecret: Shared Secret
      witness.sharedSecret=secretShrTokFooUser123
      
      popLinkWitnessV2.enable=true
      popLinkWitnessV2.keyGenAlg=SHA-256
      popLinkWitnessV2.macAlg=SHA-256-HMAC
      
      request.privKeyId=<output from PKCS10Client|CRMFPopClient xxx.priv>
      
      ### identification works with identityProofV2
      identification.enable=true
      identification=FooUser123
      Copy to clipboard
    2. CMCRequest コマンドを使用してリクエストを生成します。

      $ CMCRequest /home/FooUser123/certs_db/cmc-p10-self.cfg
      
      cert/key prefix =
      path = /home/FooUser123/certs_db
      CryptoManger initialized
      token internal logged in...
      got request privKeyId: 2e560e1974669b79b0b71eb096cfe90a2b3db370
      got private key
      
      . . . Output omitted . . .
      
      identification control: identification =FooUser123
      Successfully create identification control. bpid = 1
      
      CMCRequest: addIdentityProofV2Attr: hashAlg=SHA-512; macAlg=SHA-256-HMAC
      Identity Proof V2 control:
       Value: 44 -108 -21 24 76 -10 59 -56 28 -110 -114 -100 -70 40 48 80 24 69 -104 -13 -124 79 75 -42 -92 -29 -89 -27 -37 -107 -91 -82
      Successfully create identityProofV2 control. bpid = 2
      
      selfSign is true...
      signData for selfSign: begins:
      createSignedData: begins
      getSigningAlgFromPrivate: begins.
      getSigningAlgFromPrivate: found signingKeyType=RSA
      getSigningAlgFromPrivate: using SignatureAlgorithm: RSASignatureWithSHA256Digest
      createSignedData: digest created for pkidata
      createSignedData: digest algorithm =RSASignatureWithSHA256Digest
      getCMCBlob: begins
      getCMCBlob: generating signed data
      
      The CMC enrollment request in base-64 encoded format:
      
      . . . Output omitted . . .
      
      The CMC enrollment request in binary format is stored in /home/FooUser123/certs_db/cmc.pkcs10.self.req
      Copy to clipboard
  7. CMC 要求を送信します。

    1. HttpClient 設定ファイルを作成します。以下に例を示します。

      $ vim /home/FooUser123/certs_db/HttpClient-cmc-p10.self.cfg
      Copy to clipboard
      ### host: host name for the http server
      host=rhcs10.example.com
      
      ### port: port number
      port=31443
      
      ### secure: true for secure connection, false for nonsecure connection
      secure=true
      
      ### input: full path for the enrollment request, the content must be in binary format
      input=/home/FooUser123/certs_db/cmc.pkcs10.self.req
      
      ### output: full path for the response in binary format
      output=/home/FooUser123/certs_db/cmc.p10.self.resp
      
      ### tokenname: name of the token where the SSL client authentication cert can be found (default is internal)
      ### This parameter will be ignored if secure=false
      tokenname=internal
      
      ### dbdir: directory for cert8.db, key3.db and secmod.db
      ### This parameter will be ignored if secure=false
      dbdir=/home/FooUser123/certs_db
      
      ### clientmode: true for client authentication, false for no client authentication
      ### This parameter will be ignored if secure=false
      clientmode=false
      
      ### password: password for cert8.db
      ### This parameter will be ignored if secure=false and clientauth=false
      password=SECret.123
      
      ### nickname: nickname for client certificate
      ### This parameter will be ignored if clientmode=false
      nickname=
      
      ### servlet: servlet name
      servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caFullCMCSharedTokenCert
      Copy to clipboard
      注記

      CS への接続に TLS 相互認証が必要な場合は、「CS への接続に TLS 相互認証を要求する」 を参照してください。

    2. HttpClient コマンドを使用して要求を送信します。

      # HttpClient /home/FooUser123/certs_db/HttpClient-cmc-p10.self.cfg
      
      Total number of bytes read = 2966
      after SSLSocket created, thread token is NSS FIPS 140-2 User Private Key
      handshake happened
      writing to socket
      handshake happened
      Total number of bytes read = 1714
      
      . . . Output omitted . . .
      
      The response in binary format is stored in /home/FooUser123/certs_db/cmc.p10.self.resp
      Copy to clipboard
  8. CMCResponse 呼び出しを処理します。

    $ CMCResponse -d /home/FooUser123/certs_db -i /home/FooUser123/certs_db/cmc.p10.self.resp
    
    Certificates:
       Certificate:
          Data:
              Version:  v3
              Serial Number: 0x3D58D34
              Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
              Issuer: CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA
              Validity:
                  Not Before: Sunday, February 11, 2018 6:38:08 PM EST America/New_York
                  Not  After: Friday, August 10, 2018 6:38:08 PM EDT America/New_York
              Subject: CN=FooUser123,UID=FooUser123
    
    . . . Output omitted . . .
    
    Number of controls is 1
    Control #0: CMCStatusInfoV2
     OID: {1 3 6 1 5 5 7 7 25}
     BodyList: 1
     Status: SUCCESS
    Copy to clipboard

7.8.5. ランダムなシリアル番号の確認

すべてのサブシステム証明書にランダムなシリアル番号があることを確認します。

  • SubCA の EE ページにアクセスし、証明書をリスト表示して、ランダムなシリアル番号があることを確認します。
  • または、次のコマンドを使用してランダムなシリアル番号を確認することもできます。

    # pki -p 31443 ca-cert-find | grep -i serial
    Copy to clipboard

7.8.6. 他の SubCA ロールユーザーの作成

先ほど、agent ロールユーザーと rsa_SubCA_AgentV の証明書を作成しました。

作成していない場合は、「PKI ロールユーザーの作成」 の手順に従って、admin および audit ロール用の他の単一ロールユーザーを作成できます。

7.8.7. クライアント認証を使用した SubCA pkiconsole へのログイン

  1. sslclientauth を使用して SubCA を設定し、「クライアント認証を使用した pkiconsole ログイン設定」 の説明に従ってロールユーザー証明書をインポートします。
  2. ロールユーザーのクライアント認証証明書を使用して pkiconsole にログインします。

    # pkiconsole -d <home .redhat-idm-console dir> -n <client cert> https://rhcs10.example.com:31443/ca
    Copy to clipboard

    そして、リストからロールユーザー証明書のニックネームを選択します (例 rsa_SubCA_AdminV)。コンソールへのログインは成功するはずです。

7.8.8. インストール後の設定

追加の RHCS インスタンスをインストールする場合は、次のセクションに進んでください。必要なすべての RHCS インスタンスのインストールが完了したら、「インストール後の設定」 にアクセスして追加セットアップを完了します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.