7.7. OCSP インスタンスの作成および設定 (SubCA)


このセクションでは、SubCA に対する OCSP インスタンスのインストールと設定を説明します。
OCSP システム証明書は SubCA によって発行され、OCSP は SubCA セキュリティードメインに参加します。
この例では、SubCA の OCSP は rhcs10.example.com にインストールされ、その内部ディレクトリーサーバーは rhds11.example.com にあります。

注記

/opt/pki_rsa/ca-chain.pem ファイルに完全な CA 証明書チェーン (SubCA 証明書と RootCA 証明書) が含まれていることを確認します。

Copy to Clipboard Toggle word wrap
# ls -l /opt/pki_rsa/ca-chain.pem

# cat /opt/pki_rsa/ca-chain.pem

7.7.1. 一時的な DS 証明書 (OCSP-subca) を置き換えます

SubCA の OCSP をインストールする前に、OCSP の Directory Server の公式 SSL サーバー証明書を発行します。これは一時的なブートストラップ証明書を置き換えるためのものです。そのためには、まず Directory Server 証明書の証明書署名要求 (CSR) を作成し、次にこの要求を CA に送信します。

注記

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

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

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

  1. DS を停止します。

    Copy to Clipboard Toggle word wrap
    # dsctl slapd-CC-RSA-OCSP-subca-LDAP stop
    注記

    DS インスタンスの名前がわからない場合は、dsctl -l を使用してすべてのインスタンスをリスト表示します。

  2. certutil ツールを使用して CSR を生成します。

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

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

    Copy to Clipboard Toggle word wrap
    # vi /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr

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

  3. CA が置かれているシステムに Server-Cert-ocsp-subca.csr ファイルをリモートコピーします。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    # scp /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.csr

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

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

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

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

      Copy to Clipboard Toggle word wrap
      # vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_pkcs10.cfg
      Copy to Clipboard Toggle word wrap
      ### 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-ocsp-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-ocsp-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
    2. CMCRequest コマンドを使用してリクエストを生成します。

      Copy to Clipboard Toggle word wrap
      # CMCRequest /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-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-ocsp-subca_pkcs10.req
  2. CMC 要求を送信します。

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

      Copy to Clipboard Toggle word wrap
      # vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-subca.cfg
      Copy to Clipboard Toggle word wrap
      ### 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-ocsp-subca_pkcs10.req
      
      ### output: full path for the response in binary format
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-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=caCMCserverCert
    2. HttpClient コマンドを使用して要求を送信します。

      Copy to Clipboard Toggle word wrap
      # HttpClient /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-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-ocsp-subca_pkcs10.resp
  3. CMC 応答を処理します。

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

      重要

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

      Copy to Clipboard Toggle word wrap
      # CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_pkcs10.resp -v
      
      Cert:0
      …
      ===
      Cert:1
      …
      ===
      Cert:2
      …
      ===
      Certificates:
          Certificate:
              Data:
                  Version:  v3
                  Serial Number: 0xF4837FD
                  Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11
                  Issuer: CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA
                  Validity:
                      Not Before: Wednesday, September 13, 2023 10:29:00 AM EDT America/New_York
                      Not  After: Tuesday, September 2, 2025 10:29:00 AM EDT America/New_York
                  Subject: CN=rhds11.example.com
      
      . . . Output omitted . . .
      
          Certificate:
              Data:
                  Version:  v3
                  Serial Number: 0xD0F4BEE
                  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: Friday, September 1, 2023 1:26:46 AM EDT America/New_York
                      Not  After: Tuesday, September 1, 2043 1:26:46 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: 0x485588D
                  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, September 12, 2023 5:18:54 PM EDT America/New_York
                      Not  After: Friday, September 12, 2042 5:18:54 PM 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.
    2. 新しい Server-Cert DS 証明書を、適切な名前でブートストラップ証明書ディレクトリー (例: /root/.dogtag/pki_rsa_bootstrap/certs_db/) 内のファイルに保存します。.pem ファイルは、ヘッダー -----BEGIN CERTIFICATE----- で開始し、フッター -----END CERTIFICATE----- で終了する必要があります。以下に例を示します。

      Copy to Clipboard Toggle word wrap
      # vi /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.pem

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

      注記

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

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

    Copy to Clipboard Toggle word wrap
    # scp /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/

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

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

  1. dirsrv ディレクトリーの内容をバックアップディレクトリーに保存します。

    Copy to Clipboard Toggle word wrap
    # cp -r /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-OCSP-subca-LDAP/
  2. 古い DS 証明書を削除します。

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

    Copy to Clipboard Toggle word wrap
    # certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-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 Toggle word wrap
    # certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-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 Toggle word wrap
    # certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.pem
  4. 証明書をリスト表示します。

    Copy to Clipboard Toggle word wrap
    # certutil -L -d /etc/dirsrv/slapd-CC-RSA-OCSP-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
  5. DS を起動します。

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

    Copy to Clipboard Toggle word wrap
    # ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:11636 -b "dc=example,dc=com" -w SECret.123

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

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

7.7.2. SubCA の OCSP インスタンスをインストールする

SubCA の OCSP インスタンスをインストールするには、シングルステップ方式とツーステップ方式の いずれか 1 つ を使用します。次の手順では、シングルステップ方式を説明します。ツーステップ方式でインストールする場合は、「インストール方法 (シングルステップまたはツーステップ)」 および 「RootCA インスタンスのインストール (ツーステップ方式)」 を参照してください。

前提条件

手順

  1. 選択した場所 (例: /root/pki_rsa) に OCSP インストールファイルを作成して、証明書要求を生成します。

    Copy to Clipboard Toggle word wrap
    # cd /root/pki_rsa
    Copy to Clipboard Toggle word wrap
    # vi ocsp_subca_inst.cfg
    注記

    明示的に指定されていない限り、システム証明書のニックネームは、pki_instance_name に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。

    以下のインストールファイルでは、例となる値を指定しています。HSM パスワードの変更に加えて、たとえばポート、ディレクトリー、ニックネーム、ドメインなどの値を適宜変更します。

    Copy to Clipboard Toggle word wrap
    [DEFAULT]
    pki_instance_name=rhcs10-RSA-OCSP-subca
    pki_https_port=32443
    pki_http_port=32080
    
    ### Crypto Token
    pki_hsm_enable=True
    pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so
    pki_hsm_modulename=nfast
    pki_token_name=NHSM-CONN-XC
    pki_token_password=<YourHSMpassword>
    
    pki_audit_signing_token=NHSM-CONN-XC
    pki_audit_signing_key_algorithm=SHA256withRSA
    pki_audit_signing_key_size=2048
    pki_audit_signing_key_type=rsa
    pki_audit_signing_signing_algorithm=SHA256withRSA
    
    pki_subsystem_token=NHSM-CONN-XC
    pki_subsystem_key_algorithm=SHA256withRSA
    pki_subsystem_signing_algorithm=SHA256withRSA
    pki_subsystem_key_size=2048
    pki_subsystem_key_type=rsa
    
    pki_sslserver_token=NHSM-CONN-XC
    pki_sslserver_key_algorithm=SHA256withRSA
    pki_sslserver_signing_algorithm=SHA256withRSA
    pki_sslserver_key_size=2048
    pki_sslserver_key_type=rsa
    
    ### CA cert chain concatenated in PEM format
    pki_cert_chain_path=/opt/pki_rsa/ca-chain.pem
    
    ### Bootstrap Admin
    pki_admin_password=SECret.123
    pki_admin_key_type=rsa
    pki_admin_key_size=2048
    pki_admin_key_algorithm=SHA256withRSA
    
    ### Bootstrap Admin client dir
    pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-OCSP-subca/ocsp_admin_cert.p12
    pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-OCSP-subca/certs_db
    pki_client_database_password=SECret.123
    pki_client_database_purge=False
    pki_client_dir=/opt/pki_rsa/rhcs10-RSA-OCSP-subca
    pki_client_pkcs12_password=SECret.123
    
    ### Internal LDAP
    pki_ds_bind_dn=cn=Directory Manager
    pki_ds_ldap_port=11389
    pki_ds_ldaps_port=11636
    pki_ds_password=SECret.123
    pki_ds_remove_data=True
    pki_ds_secure_connection=True
    pki_ds_secure_connection_ca_pem_file=/opt/pki_rsa/ca-chain.pem
    pki_ds_secure_connection_ca_nickname=CA Signing Cert - rhcs10-RSA-SubCA
    
    ### Security Domain
    pki_security_domain_hostname=rhcs10.example.com
    pki_security_domain_https_port=31443
    pki_security_domain_password=SECret.123
    pki_security_domain_user=caadmin
    
    
    [Tomcat]
    pki_ajp_port=32009
    pki_tomcat_server_port=32005
    
    
    [OCSP]
    pki_import_admin_cert=False
    
    pki_ocsp_signing_token=NHSM-CONN-XC
    pki_ocsp_signing_key_algorithm=SHA256withRSA
    pki_ocsp_signing_key_size=3072
    pki_ocsp_signing_key_type=rsa
    pki_ocsp_signing_signing_algorithm=SHA256withRSA
    
    pki_admin_nickname=PKI Bootstrap Administrator for RSA-OCSP-subca
    pki_admin_name=ocspadmin
    pki_admin_uid=ocspadmin
    pki_admin_email=ocspadmin@example.com
    
    pki_ds_hostname=rhds11.example.com
    pki_ds_base_dn=dc=RSA-OCSP-subca
    pki_ds_database=CC-RSA-OCSP-subca-LDAP
    pki_share_db=False
  2. pkispawn ツールを実行して、OCSP サブシステムをインストールします。

    Copy to Clipboard Toggle word wrap
    # pkispawn -s OCSP -f ocsp_subca_inst.cfg --debug

    これにより、OCSP インスタンスが /var/lib/pki/rhcs10-RSA-OCSP-subca に作成されます。

注記

この OCSP をツーステップ方法を使用してインストールする場合は以下を実行します。

  1. まず、--skip-configuration オプションを指定して pkispawn ツールを実行し、SubCA の OCSP インスタンスをインストールします。

    Copy to Clipboard Toggle word wrap
    # pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-configuration --debug
  2. 2 つのインストールステップの間に設定ファイルをカスタマイズします。
  3. pkispawn ツールを実行して OCSP を設定します。

    Copy to Clipboard Toggle word wrap
    # pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-installation --debug

検証

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

    Copy to Clipboard Toggle word wrap
    # pki-server status rhcs10-RSA-OCSP-subca

7.7.3. SubCA の OCSP pkiconsole タイムアウトを増やす

  1. rhcs10.example.com に root としてログインします。
  2. SubCA の OCSP サービスを停止します。

    Copy to Clipboard Toggle word wrap
    pki-server stop rhcs10-RSA-OCSP-subca
  3. /var/lib/pki/rhcs10-RSA-OCSP-subca/conf/server.xml を編集して、タイムアウトの時間を増やします。

    Copy to Clipboard Toggle word wrap
    <Connector name="Secure" port="32443" …
    connectionTimeout="3000000"
  4. SubCA の OCSP サービスを開始します。

    Copy to Clipboard Toggle word wrap
    # pki-server start rhcs10-RSA-OCSP-subca

7.7.4. この OCSP を指すようにデフォルトの AIA 拡張機能を設定します

デフォルトでは、明示的に指定されていない限り、CA は、CA 自身の内部 OCSP を指す AIA (Authority Information Access) 拡張を持つ証明書を発行します。OCSP インスタンスをセットアップしたので、SubCA を設定して、代わりに OCSP インスタンスを指す AIA 拡張機能を使用して証明書の発行を開始できます。

root として、rhcs10.example.com で以下を実行します。

  1. SubCA を停止します。

    Copy to Clipboard Toggle word wrap
    # pki-server stop rhcs10-RSA-SubCA
  2. SubCA の CS.cfg を編集し、ca.defaultOcspUri 変数が OCSP を指すように設定します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    ca.defaultOcspUri=http://rhcs10.example.com:32080/ocsp/ee/ocsp
  3. SubCA を開始します。

    Copy to Clipboard Toggle word wrap
    # pki-server start rhcs10-RSA-SubCA
注記

各サブシステム (KRA など) の OCSP URL は、デフォルトで server.xml ファイルに設定されています。これを有効にすると、ピア証明書に埋め込まれた AIA 拡張ではなく、証明書のステータスを検索するときに静的 URL を使用するように RHCS インスタンスに指示します。AIA 拡張を使用するには、サブシステムのインストール時に 「CA/KRA/TKS/TPS の OCSP を有効にする」 を実行するように指示されます。

7.7.5. OCSP ロールユーザーの作成

  • 「PKI ロールユーザーの作成」 の手順を実行して、OCSP で単一ロールの管理者、エージェント、監査ユーザーを作成します。そのためには、SubCA の OCSP ブートストラップ管理者証明書 ocsp_admin_cert.p12 をインポートする必要があります。以下はその例です。

    Copy to Clipboard Toggle word wrap
    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import --pkcs12 /opt/pki_rsa/rhcs10-RSA-OCSP-subca/ocsp_admin_cert.p12 --pkcs12-password SECret.123
    
    ----------------------------------------
    Imported certificates from PKCS #12 file
    ----------------------------------------

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

  1. クライアント認証を使用する pkiconsole ログインを設定する の手順に従って、authType=sslclientauth を使用して OCSP を設定し、ロールユーザー証明書をインポートします。
  2. ロールユーザーのクライアント認証証明書を使用して pkiconsole にログインします。

    Copy to Clipboard Toggle word wrap
    # pkiconsole -d <home .redhat-idm-console dir> -n <client cert> https://rhcs10.example.com:32443/ocsp

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

7.7.7. CRL 公開の設定

Red Hat Certificate System では、CA 外部の OCSP インスタンスで使用される CRL を 2 つの方法で公開できます。

  • CA から OCSP CRL への直接公開
  • CA から LDAP、LDAP から OCSP への間接公開

デフォルトでは、OCSP インスタンスが設定されると最初の CRL 公開方法も自動的に設定され、CA から OCSP CRL への直接公開が可能になります。

このセクションでは、CA が CRL を LDAP サーバーに公開し、OCSP が LDAP サーバーから CRL を取得する 2 番目の方法を詳しく説明します。

7.7.7.1. CRL 公開用の LDAP サーバーの設定

rhds11.example.com で root として以下を実行します。

  1. CA が CRL の公開に使用する Directory Server インスタンスをインストールします。Red Hat Directory Server は、LDAP/LDAPS ポート (それぞれ 5389 および 5636) をリッスンしています。

    1. dscreate create-template コマンドを使用して、選択した場所 (例: /root/pki_rsa) にテンプレート .cfg ファイルを作成します。

      Copy to Clipboard Toggle word wrap
      # dscreate create-template /root/pki_rsa/subca-crl-publish-ldap.cfg
    2. 前の手順で作成した .cfg ファイルを編集します。以下のパラメーターのコメントを解除し、インストールをカスタマイズするように設定します。

      Copy to Clipboard Toggle word wrap
      full_machine_name = rhds11.example.com
      port = 5389
      secure_port = 5636
      instance_name = CC-RSA-SubCA-CRL-PUBLISH
      root_password = SECret.123
      suffix = dc=example,dc=com
      create_suffix_entry = True
    3. Directory Server インスタンスをインストールします。

      Copy to Clipboard Toggle word wrap
      # dscreate from-file /root/pki_rsa/subca-crl-publish-ldap.cfg
      
      Starting installation...
      
      Completed installation for CC-RSA-SubCA-CRL-PUBLISH
  2. ACI(アクセス制御命令) ルールを追加して、匿名のバインドアクセスを許可します。デフォルトでは、これは無効になっています。

    1. 選択した場所 (例: /root/pki_rsa/dirsrv/) に次の内容の ldapaci.ldif ファイルを作成します。

      Copy to Clipboard Toggle word wrap
      dn: dc=example,dc=com
      changetype: modify
      add: aci
      aci: (targetattr!="userPassword || aci")(version 3.0; acl "Enable anonymous access"; allow (read, search, compare) userdn="ldap:///anyone";)
    2. ldapmodify コマンドを実行して、ACI を追加します。

      Copy to Clipboard Toggle word wrap
      # ldapmodify -x -h rhds11.example.com -p 5389 -D 'cn=Directory Manager' -W -f /root/pki_rsa/dirsrv/ldapaci.ldif
  3. CRL 公開サブツリーを準備します。

    1. /root/pki_rsa/dirsrv ディレクトリーに次の内容の 2 つのファイルを作成します。

      • subca_pki_subtree.ldif ファイルの場合:

        Copy to Clipboard Toggle word wrap
        dn: dc=pki,dc=example,dc=com
        objectClass: domain
        dc: pki
      • subca_crl_subtree.ldif ファイルの場合:

        Copy to Clipboard Toggle word wrap
        dn: dc=crl,dc=pki,dc=example,dc=com
        objectClass: domain
        dc: crl
    2. 両方のエントリーを CRL インスタンスに追加します。

      Copy to Clipboard Toggle word wrap
      # ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_pki_subtree.ldif
      Copy to Clipboard Toggle word wrap
      # ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_crl_subtree.ldif

7.7.7.2. SubCA での CRL 公開の設定

CRL 公開を設定するには、以下を実行します。

  1. ca.publish. プロパティーを追加します。

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

      Copy to Clipboard Toggle word wrap
      # pki-server stop rhcs10-RSA-SubCA
    2. SubCA の CS.cfg 設定ファイル (例: /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg) で次のプロパティーを設定します。

      Copy to Clipboard Toggle word wrap
      ca.publish.ldappublish.enable=true
      ca.publish.ldappublish.ldap.ldapauth.authtype=BasicAuth
      ca.publish.ldappublish.ldap.ldapauth.bindDN=cn=Directory Manager
      ca.publish.ldappublish.ldap.ldapauth.bindPWPrompt=CA LDAP Publishing
      ca.publish.ldappublish.ldap.ldapconn.host=rhds11.example.com
      ca.publish.ldappublish.ldap.ldapconn.port=5389
      ca.publish.ldappublish.ldap.ldapconn.secureConn=false
      ca.publish.publisher.instance.LdapCaCertPublisher.caCertAttr=cACertificate;binary
      ca.publish.publisher.instance.LdapCaCertPublisher.caObjectClass=pkiCA
      ca.publish.publisher.instance.LdapCaCertPublisher.pluginName=LdapCaCertPublisher
      ca.publish.mapper.instance.LdapCaCertMap.createCAEntry=true
      ca.publish.mapper.instance.LdapCaCertMap.dnPattern=cn=$subj.cn,dc=crl,dc=pki,dc=example,dc=com
      ca.publish.mapper.instance.LdapCaCertMap.pluginName=LdapCaSimpleMap
      ca.publish.rule.instance.LdapCaCertRule.enable=true
      ca.publish.rule.instance.LdapCaCertRule.mapper=LdapCaCertMap
      ca.publish.rule.instance.LdapCaCertRule.pluginName=Rule
      ca.publish.rule.instance.LdapCaCertRule.predicate=
      ca.publish.rule.instance.LdapCaCertRule.publisher=LdapCaCertPublisher
      ca.publish.rule.instance.LdapCaCertRule.type=cacert
      ca.publish.publisher.instance.LdapCrlPublisher.crlAttr=certificateRevocationList;binary
      ca.publish.publisher.instance.LdapCrlPublisher.crlObjectClass=pkiCA
      ca.publish.publisher.instance.LdapCrlPublisher.pluginName=LdapCrlPublisher
      ca.publish.mapper.instance.LdapCrlMap.createCAEntry=true
      ca.publish.mapper.instance.LdapCrlMap.dnPattern=cn=$subj.cn,dc=crl,dc=pki,dc=example,dc=com
      ca.publish.mapper.instance.LdapCrlMap.pluginName=LdapCaSimpleMap
      ca.publish.rule.instance.LdapCrlRule.enable=true
      ca.publish.rule.instance.LdapCrlRule.mapper=LdapCrlMap
      ca.publish.rule.instance.LdapCrlRule.pluginName=Rule
      ca.publish.rule.instance.LdapCrlRule.predicate=issuingPointId==MasterCRL
      ca.publish.rule.instance.LdapCrlRule.publisher=LdapCrlPublisher
      ca.publish.rule.instance.LdapCrlRule.type=crl
      ca.publish.enable=true
      注記

      または、ca-config-set コマンドを使用してプロパティーを更新することもできます。以下に例を示します。

      Copy to Clipboard Toggle word wrap
      # pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.port 5389; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCaCertMap.dnPattern "cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com"; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com

      上記は一例です。

      ca-config-show コマンドを使用して、パラメーターが正常に更新されたことを確認できます。以下に例を示します。

      Copy to Clipboard Toggle word wrap
      # pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.port 5389; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCaCertMap.dnPattern "cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com"; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
    3. SubCA インスタンスを起動します。

      Copy to Clipboard Toggle word wrap
      pki-server start rhcs10-RSA-SubCA
  2. curl を介して、CRL および CA 証明書を LDAP ディレクトリーにプッシュします。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    # curl \
        -d "xml=true" \
        --cert-type P12 \
        --cert /opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12:SECret.123 \
        -k \
        https://rhcs10.example.com:31443/ca/agent/ca/updateCRL \
        | xmllint --format -
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <xml>
      <header>
        <crlIssuingPoint>MasterCRL</crlIssuingPoint>
        <crlUpdate>Scheduled</crlUpdate>
      </header>
      <fixed/>
      <records/>
    </xml>
  3. CA→OCSP CRL の直接公開方式を無効にします。

    1. SubCA を停止します。

      Copy to Clipboard Toggle word wrap
      # pki-server stop rhcs10-RSA-SubCA
    2. CA の CS.cfg 設定ファイル (例: /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg) を編集し、以下を false に設定します。

      Copy to Clipboard Toggle word wrap
      ca.publish.rule.instance.ocsprule-<host/port info>.enable=false

      以下に例を示します。

      Copy to Clipboard Toggle word wrap
      ca.publish.rule.instance.ocsprule-rhcs10-example-com-32443.enable=false
    3. 設定の変更を有効にするには、CA を起動します。

      Copy to Clipboard Toggle word wrap
      # pki-server start rhcs10-RSA-SubCA
  4. curl を使用して Directory Server を更新します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    # curl \
      -d "updateCRL=yes&updateCA=yes&xml=true" \
      --cert-type P12 --cert /opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12:SECret.123 \
      -k https://rhcs10.example.com:31443/ca/agent/ca/updateDir | xmllint --format -
  5. curl を使用して CRL を表示します。

    Copy to Clipboard Toggle word wrap
    # curl \
       -d "pageSize=50&crlIssuingPoint=MasterCRL&pageStart=1&crlDisplayType=entireCRL&xml=true" \
       --cert-type P12 \
       --cert /opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12:SECret.123 \
       -k \
       https://rhcs10.example.com:31443/ca/agent/ca/displayCRL | xmllint --format -
  6. ldapsearch を実行して、CRL と CA 証明書が LDAP ディレクトリーにプッシュされていることを確認します。

    Copy to Clipboard Toggle word wrap
    # ldapsearch -x -D "cn=Directory Manager" -h "rhds11.example.com" -p 5389 -b "dc=example,dc=com" -w SECret.123
    Copy to Clipboard Toggle word wrap
    . . . Output omitted . . .
    
    # CA Signing Certificate, crl.pki.example.com
    dn: cn=CA Signing Certificate,dc=crl,dc=pki,dc=example,dc=com
    cn: CA Signing Certificate
    sn: CA Signing Certificate
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: pkiCA
    
    
    cACertificate;binary::
    MIICBzCB8AIBATANBgkqhkiG9w0BAQ0FADBdMRYwFAYDVQQKEw1FeGFtcGxlLVN1YkNBMSIwIAYDVQQLExlyaGNzOTMtVE1TLVN1YkNBLWFha2tpYW5nMR8wHQYDVQQDExZDQSBTaWduaW5nIENlcnRpZmljYXRlFw0xODAzMDkxODA
    
    . . . Output omitted . . .
    
    certificateRevocationList;binary::
    IID9DCCAtygAwIBAgIEBwa6XDANBgkqhkiG9w0BAQsFADBiMR4wHAYDVQQKDBVFeGFtcGxlLXJoY3M5My1UTVMtQ0ExHzAdBgNVBAsMFnJoY3M5My1UTVMtQ
    
    . . . Output omitted . . .
  7. SubCA の証明書公開を無効にします (オプション)。
注記

次の手順は、以下のようなデバッグログの警告メッセージを防ぐためのものです。

Copy to Clipboard Toggle word wrap
2024-01-29 00:04:10 [Thread-18] INFO: CAPublisherProcessor: No rules enabled
2024-01-29 00:04:10 [Thread-18] SEVERE: PublishProcessor::publishCert : Failed to publish using rule: No rules enabled
2024-01-29 00:04:10 [Thread-18] WARNING: Could not publish certificate serial number 0x9c2762c. Error Failed to publish using rule: No rules enabled
Failed to publish using rule: No rules enabled
  1. SubCA を停止します。

    Copy to Clipboard Toggle word wrap
    # pki-server stop rhcs10-RSA-SubCA
  2. /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg を編集し、以下を設定します。

    Copy to Clipboard Toggle word wrap
    ca.publish.cert.enable=false
  3. 設定の変更を有効にするには、SubCA を起動します。

    Copy to Clipboard Toggle word wrap
    # pki-server start rhcs10-RSA-SubCA

7.7.7.3. LDAP サーバーから CRL を取得するように OCSP を設定する

代替の CRL 公開方法を選択した場合は、CRL を取得する場所を OCSP が認識できるように設定する必要があります。そのためには、OCSP 失効情報ストア情報を、CRL 発行 LDAP インスタンス (この章の前半で設定したインスタンス) を指すように事前に設定する必要があります。

OCSP 失効情報ストアを設定するには、以下を実行します。

  1. OCSP を停止します。

    Copy to Clipboard Toggle word wrap
    # pki-server stop rhcs10-RSA-OCSP-subca
  2. OCSP の CS.cfg 設定ファイル (例: /var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/conf/CS.cfg) で ldapStore プロパティーを設定します。ocsp.storeId パラメーターを defStore から ldapStore に変更し、次のパラメーターを追加します。

    Copy to Clipboard Toggle word wrap
    ocsp.storeId=ldapStore
    ocsp.store.ldapStore.numConns=1
    ocsp.store.ldapStore.host0=rhds11.example.com
    ocsp.store.ldapStore.port0=5389
    ocsp.store.ldapStore.baseDN0=dc=crl,dc=pki,dc=example,dc=com
    ocsp.store.ldapStore.refreshInSec0=120
    ocsp.store.ldapStore.byName=true
    ocsp.store.ldapStore.caCertAttr=cACertificate;binary
    ocsp.store.ldapStore.crlAttr=certificateRevocationList;binary
    ocsp.store.ldapStore.notFoundAsGood=true
    注記

    refreshInSec0 のデフォルト値は 86400 ですが、テスト目的で 120 に設定したため、CRL の更新は 2 分ごとに行われます。

  3. オプションとして、より適切に観察するために、OCSP の CS.cfg 設定ファイルでデバッグレベルを 0 に設定して、LDAPStore の更新がデバッグログに表示されるようにできます。それ以外では、更新がない場合にのみステータスが表示されます。

    Copy to Clipboard Toggle word wrap
    debug.level=0

    これを適用すると、特に OCSP システムではデバッグログのサイズが急速に増加することに注意してください。この点を考慮して、短期間のテスト期間のみに推奨されます。

  4. OCSP を起動して、ldapStore 設定を適用します。

    Copy to Clipboard Toggle word wrap
    # pki-server start rhcs10-RSA-OCSP-subca

7.7.7.4. CRL 公開のテスト

このセクションでは、2 つのユーザー証明書を作成し、そのうちの 1 つを取り消して、CRL の公開をテストします。次に、有効な証明書と取り消された証明書の両方を OCSP インスタンスと照合して、応答が想定どおりかどうかを確認します。

CMC 証明書の作成

user1user2 のエージェント署名付き CMC 証明書を作成します。CMC 要求はブートストラップ管理者証明書によって署名されます。たとえば、user1 の場合は以下を行います。

  1. データベースの証明書をリスト表示します。

    Copy to Clipboard Toggle word wrap
    # certutil -d /root/.dogtag/pki_rsa_bootstrap/certs_db -L
    
    Certificate Nickname                          Trust Attributes
                                                  SSL,S/MIME,JAR/XPI
    
    PKI Bootstrap Administrator for RSA-SubCA     u,u,u
    CA Signing Cert - rhcs10-RSA-SubCA            CT,C,C
    
    . . . Output omitted . . .
  2. PKCS10Client ツールを使用して、PKCS10 証明書要求を生成します。

    Copy to Clipboard Toggle word wrap
    # PKCS10Client -d /root/.dogtag/pki_rsa_bootstrap/certs_db -p SECret.123 -n "cn=test user1, uid=user1" -o /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req
    
    PKCS10Client: Certificate request written into /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req
    PKCS10Client: PKCS#10 request key id written into /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId
    注記

    次の手順で使用できるように、keyId ファイルに対して cat を使用します。

    Copy to Clipboard Toggle word wrap
    # cat /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId; echo
  3. CMC 要求を生成します。

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

      Copy to Clipboard Toggle word wrap
      # vi cmcRequest_p10_user1.cfg
      Copy to Clipboard Toggle word wrap
      ### 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=/root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req
      
      ### output: full path for the CMC request in binary format
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.user1_pkcs10.req
      
      ### tokenname: name of the token where the agent signing cert can be found (default is internal)
      tokenname=internal
      
      ### nickname: nickname for the certificate that will be used to sign the CMC full request.
      ### nickname=caaadmin
      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 user signing certificate and keys
      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=false
      identityProofV2.hashAlg=SHA-512
      identityProofV2.macAlg=SHA-256-HMAC
      request.privKeyId=<output from PKCS10Client|CRMFPopClient xxx.priv>
    2. CMCRequest コマンドを使用してリクエストを生成します。

      Copy to Clipboard Toggle word wrap
      # CMCRequest cmcRequest_p10_user1.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
      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=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.user1_pkcs10.req
  4. CMC 要求を送信します。

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

      Copy to Clipboard Toggle word wrap
      # vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
      Copy to Clipboard Toggle word wrap
      ### 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.user1_pkcs10.req
      
      ### output: full path for the response in binary format
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.user1_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=caFullCMCUserCert
    2. HttpClient コマンドを使用して要求を送信します。

      Copy to Clipboard Toggle word wrap
      # HttpClient /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
      
      Total number of bytes read = 3453
      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 = 2590
      
      . . . Output omitted . . .
      
      The response in binary format is stored in
      /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.user1_pkcs10.resp
  5. CMCResponse コマンドを使用して応答を処理します。

    Copy to Clipboard Toggle word wrap
    # CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.user1_pkcs10.resp
    
    . . . Output omitted . . .
    
    Number of controls is 1
    Control #0: CMCStatusInfoV2
       OID: {1 3 6 1 5 5 7 7 25}
       BodyList: 1
       Status: SUCCESS
  6. 同様に、適切な値で上記の手順を繰り返して、user2 の証明書を作成します。

取り消しの設定

ここで、user2 証明書を取り消すための設定を行います。

  1. CRL および CA 証明書を LDAP ディレクトリーにプッシュします。

    1. ブラウザーで SubCA のエージェント UI にログインします。
    2. Update Revocation List を選択し、Update をクリックします。
    3. Update Directory Server をクリックして、次を選択します。

      • Update the certificate revocation list to the directory (証明書失効リストのディレクトリーへの更新)
      • Update Certificate Manager certificate to the directory (Certificat Manager 証明書のディレクトリーへの更新)
    4. Update Directory をクリックします。
    5. OCSP の ldapStore の更新が行われるのを待ちます (/var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/logs/debug のデバッグファイルを確認します)。
  2. OCSPClient ツールを使用して証明書のステータスを確認します。たとえば、user1 の証明書のシリアル番号 (10 進数) を使用すると、次のようになります。

    Copy to Clipboard Toggle word wrap
    # OCSPClient -v -d /root/.dogtag/pki_rsa_bootstrap/certs_db -h rhcs10.example.com -p 32080 -c "CA Signing Cert - rhcs10-RSA-SubCA" --serial 245832201
    
    Initializing security database
    Creating request for serial number 245832201
    Submitting OCSP request
    URL: http://rhcs10.example.com:32080/ocsp/ee/ocsp
    Request Length: 71
    Request: MEUwQzBBMD8wPTAJBgUrDgMCGgUABBRA+gjEGo4W0lUiC/Ve/oO8CrXQLQQUK4Bf
    o2u6SW0p6q58dlNCXxOVw30CBA7kEiA=
    
    Response Length: 3546
    Response: <blob>
    CertID.serialNumber=245832201
    CertStatus=Good
  3. user2 の証明書を取り消します。

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

      Copy to Clipboard Toggle word wrap
      # vi cmc-agent-signed-revoke.cfg
      Copy to Clipboard Toggle word wrap
      ### numRequests: Total number of PKCS10 requests or CRMF requests.
      numRequests=1
      
      ### output: full path for the CMC request in binary format
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.revoke.agentSigned.req
      
      ### tokenname: name of the token where the user signing cert can be found (default is internal)
      tokenname=internal
      
      ### nickname: nickname for the signing certificate which 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 which stores the user signing certificate and keys
      password=SECret.123
      
      ### format: request format, either pkcs10 or crmf
      format=pkcs10
      
      ### revocation parameters
      revRequest.enable=true
      revRequest.serial=245832201
      revRequest.reason=unspecified
      revRequest.comment=test user2 certificate revocation
    2. CMCRequest コマンドを使用してリクエストを生成します。

      Copy to Clipboard Toggle word wrap
      # CMCRequest cmc-agent-signed-revoke.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
      addRevRequestAttr: no sharedSecret found; request will be signed;
      addRevRequestAttr: RevokeRequest control created.
      selfSign 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.revoke.agentSigned.req
    3. HttpClient 設定ファイルを作成します。以下に例を示します。

      Copy to Clipboard Toggle word wrap
      # vi HttpClient.revoke.agentSigned.cfg
      Copy to Clipboard Toggle word wrap
      ### CA server host name.
      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.revoke.agentSigned.req
      
      ### output: full path for the response in binary format
      output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.revoke.agentSigned.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=caFullCMCUserCert
    4. HttpClient コマンドを使用して要求を送信します。

      Copy to Clipboard Toggle word wrap
      # HttpClient HttpClient.revoke.agentSigned.cfg
      
      Total number of bytes read = 2793
      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 = 1638
      
      . . . Output omitted . . .
      
      The response in binary format is stored in
      /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.revoke.agentSigned.resp
    5. CMC 応答を処理します。

      Copy to Clipboard Toggle word wrap
      # CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.revoke.agentSigned.resp
      
      . . . Output omitted . . .
      
      Number of controls is 1
      Control #0: CMCStatusInfoV2
        OID: {1 3 6 1 5 5 7 7 25}
        BodyList: 1
        Status: SUCCESS

検証

  1. CA 署名付き監査ログ (例: /var/log/pki/rhcs10-RSA-SubCA/ca/signedAudit/ca_audit) で、user2 証明書が実際に取り消されたことを確認します。
  2. 次の CRL 自動更新 (SubCA の CS.cfg ファイルの ca.crl.MasterCRL.autoUpdateInterval によって設定された更新間隔 (分単位)) まで待ちます。デフォルトは 240 分に設定されています)。

    注記

    または、CRL をすぐに手動で更新する場合は、ブラウザーで SubCA のエージェント UI にログインし、次の手順を実行します。

    1. Update Revocation List を選択し、Update をクリックします。
    2. Update Directory Server をクリックして、次を選択します。

      • Update the certificate revocation list to the directory (証明書失効リストのディレクトリーへの更新)
      • Update Certificate Manager certificate to the directory (Certificat Manager 証明書のディレクトリーへの更新)
    3. Update Directory をクリックします。

    ldapStore の更新が完了したら、/var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/logs/debug にあるデバッグファイルを確認します。

  3. OCSPCLient ツールを使用して、10 進数のシリアル番号で user2 の証明書が失効していることを確認します (-c は署名する CA のニックネームを指します)。

    Copy to Clipboard Toggle word wrap
    # OCSPClient -v -d /root/.dogtag/pki_rsa_bootstrap/certs_db -h rhcs10.example.com -p 32080 -c "CA Signing Cert - rhcs10-RSA-SubCA" --serial 245832201
    
    Initializing security database
    Creating request for serial number 245832201
    Submitting OCSP request
    URL: http://rhcs10.example.com:32080/ocsp/ee/ocsp
    Request Length: 71
    Request: MEUwQzBBMD8wPTAJBgUrDgMCGgUABBRA+gjEGo4W0lUiC/Ve/oO8CrXQLQQUK4Bf
    o2u6SW0p6q58dlNCXxOVw30CBA7kEiA=
    
    Response Length: 3563
    Response: <blob>
    CertID.serialNumber=245832201
    CertStatus=Revoked

ocsp.store.ldapStore.refreshInSec0 を、目的の値に戻します。

以前は、テスト目的で CRL の更新間隔を短く (2 分) するために、ocsp.store.ldapStore.refreshInSec0=120 を設定していました。

  • OCSP の CS.cfg の値を目的の値 (秒単位) に変更し、デバッグレベルを 10 に戻して OCSP を再起動してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.