7.4. OCSP インスタンス (RootCA) の作成と設定
このセクションでは、RootCA に対する OCSP インスタンスのインストールと設定を説明します。
OCSP システム証明書は RootCA によって発行され、OCSP は RootCA セキュリティードメインに参加します。
この例では、RootCA の OCSP は rhcs10.example.com にインストールされ、その内部ディレクトリーサーバーは rhds11.example.com にあります。
これは任意です。一般的に、ルート CA は日常的な証明書発行には推奨されません。したがって、ルート CA の OCSP は必要ありません。この例では、RootCA の OCSP はデモンストレーション目的でのみ提示されています。
/opt/pki_rsa/ca-chain.pem
ファイルに完全な CA 証明書チェーン (この時点では RootCA 証明書のみ) が含まれていることを確認します。
# ls -l /opt/pki_rsa/ca-chain.pem # cat /opt/pki_rsa/ca-chain.pem
7.4.1. 一時的な DS 証明書 (OCSP-rootca) を置き換えます
RootCA の 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 証明書署名要求を生成します。
DS を停止します。
# dsctl slapd-CC-RSA-OCSP-rootca-LDAP stop
注記DS インスタンスの名前がわからない場合は、dsctl -l を使用してすべてのインスタンスをリスト表示します。
certutil
ツールを使用して CSR を生成します。# certutil -R -d /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP -s "CN=rhds11.example.com" -g 2048 -f /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/pwdfile.txt -a -o /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/Server-Cert-ocsp-rootca.csr -z /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/noise.txt
重要上記で取得した
Server-Cert-ocsp-rootca.csr
出力ファイルを編集して、"Begin Certificate Request" の前の数行を削除します。以下に例を示します。
# vi /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/Server-Cert-ocsp-rootca.csr
CSR ファイルは、"-----BEGIN CERTIFICATE REQUEST-----" の行で始まり、"-----END CERTIFICATE REQUEST-----" の行で終わる必要があります。
CA が置かれているシステムに
Server-Cert-ocsp-rootca.csr
ファイルをリモートコピーします。以下に例を示します。# scp /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/Server-Cert-ocsp-rootca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-rootca.csr
実際の DS 証明書を発行する
rhcs10.example.com で、実際の SSL サーバー証明書を発行します。
CMC 要求を生成します。
CMCRequest
設定ファイルを作成します。以下に例を示します。# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-rootca_pkcs10.cfg
### 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-rootca.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-rootca_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-RootCA ### 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
CMCRequest
コマンドを使用してリクエストを生成します。# CMCRequest /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-rootca_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-RootCA 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-rootca_pkcs10.req
CMC 要求を送信します。
HttpClient
設定ファイルを作成します。以下に例を示します。# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-rootca.cfg
### host: host name for the http server host=rhcs10.example.com ### port: port number port=8443 ### 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-rootca_pkcs10.req ### output: full path for the response in binary format output=/root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-rootca_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-RootCA ### servlet: servlet name servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCserverCert
HttpClient
コマンドを使用して要求を送信します。# HttpClient /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-rootca.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-rootca_pkcs10.resp
CMC 応答を処理します。
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-ocsp-rootca_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-OCSP-rootca,O=Example-rhcs10-RSA-OCSP-rootca 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-OCSP-rootca 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-OCSP-rootca,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.
新しい
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-ocsp-rootca.pem
この場合の
Server-Cert-ocsp-rootca.pem
は、Directory Server インスタンスの新しいServer-Cert
証明書で、RootCA の OCSP の内部データベースとして機能します。注記RootCA の署名証明書は、次のコマンドからの出力と一致する必要があります。
# certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA" -a
新しい
Server-Cert
証明書を rhds11.example.com にリモートコピーします。以下に例を示します。# scp /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-rootca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/
一時 DS 証明書を置き換える
rhds11.example.com で、一時的な DS 証明書を実際の DS 証明書に置き換えます。
dirsrv
ディレクトリーの内容をバックアップディレクトリーに保存します。# cp -r /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-OCSP-rootca-LDAP/
古い DS 証明書を削除します。
# certutil -D -d /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/pwdfile.txt -n "Server-Cert"
# certutil -D -d /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/pwdfile.txt -n "Self-Signed-CA"
新しく作成した DS 証明書とチェーン内の CA 証明書を 1 つずつインポートします。以下に例を示します。
# certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-RootCA" -i /opt/pki_rsa/rootCA.pem
# certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/Server-Cert-ocsp-rootca.pem
証明書をリスト表示します。
# certutil -L -d /etc/dirsrv/slapd-CC-RSA-OCSP-rootca-LDAP/ Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI CA Signing Cert - rhcs10-RSA-RootCA CT,C,C Server-Cert u,u,u
DS を起動します。
# dsctl slapd-CC-RSA-OCSP-rootca-LDAP start
LDAP サーバーが稼働していることをテストして確認します (別のシステムの場合は、CA ホストでもテストします)。
# ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:6636 -b "dc=example,dc=com" -w SECret.123
別のシステムでテストする場合は、次のように CA 証明書チェーンを
ldapsearch
コマンドの前に追加します。# LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:6636 -b "dc=example,dc=com" -w SECret.123
7.4.2. RootCA の OCSP インスタンスをインストールする
RootCA の OCSP インスタンスをインストールするには、シングルステップ方式とツーステップ方式の いずれか 1 つ を使用します。次の手順では、シングルステップ方式を説明します。ツーステップ方式でインストールする場合は、「インストール方法 (シングルステップまたはツーステップ)」 および 「RootCA インスタンスのインストール (ツーステップ方式)」 を参照してください。
前提条件
- root ユーザーとして rhcs10.example.com にログインしている。
- 「RootCA の OCSP 用 DS インスタンスのインストール」 を完了した。この例では、CC-RSA-OCSP-rootca-LDAP は RootCA の OCSP の内部データベースです。
手順
選択した場所 (例:
/root/pki_rsa
) に OCSP インストールファイルを作成して、証明書要求を生成します。# cd /root/pki_rsa
# vi ocsp_rootca_inst.cfg
注記明示的に指定されていない限り、システム証明書のニックネームは、
pki_instance_name
に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。
以下のインストールファイルでは、例となる値を指定しています。HSM パスワードの変更に加えて、たとえばポート、ディレクトリー、ニックネーム、ドメインなどの値を適宜変更します。
[DEFAULT] pki_instance_name=rhcs10-RSA-OCSP-rootca pki_https_port=33443 pki_http_port=33080 ### 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-rootca/ocsp_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-OCSP-rootca/certs_db pki_client_database_password=SECret.123 pki_client_database_purge=False pki_client_dir=/opt/pki_rsa/rhcs10-RSA-OCSP-rootca pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=6389 pki_ds_ldaps_port=6636 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-RootCA ### Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_security_domain_user=caadmin [Tomcat] pki_ajp_port=33009 pki_tomcat_server_port=33005 [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-rootca 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-rootca pki_ds_database=CC-RSA-OCSP-rootca-LDAP pki_share_db=False
pkispawn
ツールを実行して、OCSP サブシステムをインストールします。# pkispawn -s OCSP -f ocsp_rootca_inst.cfg --debug
これにより、OCSP インスタンスが
/var/lib/pki/rhcs10-RSA-OCSP-rootca
に作成されます。
この OCSP をツーステップ方法を使用してインストールする場合は以下を実行します。
まず、
--skip-configuration
オプションを指定してpkispawn
ツールを実行し、RootCA の OCSP インスタンスをインストールします。# pkispawn -s OCSP -f ocsp_rootca_inst.cfg --skip-configuration --debug
- 2 つのインストールステップの間に設定ファイルをカスタマイズします。
pkispawn
ツールを実行して OCSP を設定します。# pkispawn -s OCSP -f ocsp_rootca_inst.cfg --skip-installation --debug
検証
インストールされている OCSP インスタンスのステータスを表示します。
# pki-server status rhcs10-RSA-OCSP-rootca
7.4.3. RootCA の OCSP pkiconsole タイムアウトを増やす
- rhcs10.example.com に root としてログインします。
RootCA の OCSP サービスを停止します。
pki-server stop rhcs10-RSA-OCSP-rootca
/var/lib/pki/rhcs10-RSA-OCSP-rootca/conf/server.xml
を編集して、タイムアウトの時間を増やします。<Connector name="Secure" port="33443" … connectionTimeout="3000000"
RootCA の OCSP サービスを開始します。
# pki-server start rhcs10-RSA-OCSP-rootca
7.4.4. この OCSP を指すようにデフォルトの AIA 拡張機能を設定します
デフォルトでは、明示的に指定されていない限り、CA は、CA 自身の内部 OCSP を指す AIA (Authority Information Access) 拡張を持つ証明書を発行します。OCSP インスタンスのセットアップを完了したため、RootCA を設定して、代わりに OCSP インスタンスを指す AIA 拡張機能を使用して証明書の発行を開始できます。
root として、rhcs10.example.com で以下を実行します。
RootCA を停止します。
# pki-server stop rhcs10-RSA-RootCA
RootCA の
CS.cfg
を編集し、ca.defaultOcspUri
変数が OCSP を指すように設定します。以下に例を示します。ca.defaultOcspUri=http://rhcs10.example.com:33080/ocsp/ee/ocsp
RootCA を開始します。
# pki-server start rhcs10-RSA-RootCA
各サブシステム (KRA など) の OCSP URL は、デフォルトで server.xml
ファイルに設定されています。これを有効にすると、ピア証明書に埋め込まれた AIA 拡張ではなく、証明書のステータスを検索するときに静的 URL を使用するように RHCS インスタンスに指示します。AIA 拡張を使用するには、サブシステムのインストール時に 「CA/KRA/TKS/TPS の OCSP を有効にする」 を実行するように指示されます。
7.4.5. OCSP ロールユーザーの作成
「PKI ロールユーザーの作成」 の手順を実行して、OCSP で単一ロールの管理者、エージェント、監査ユーザーを作成します。そのためには、RootCA の OCSP ブートストラップ管理者証明書
ocsp_admin_cert.p12
をインポートする必要があります。以下はその例です。# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import --pkcs12 /opt/pki_rsa/rhcs10-RSA-OCSP-rootca/ocsp_admin_cert.p12 --pkcs12-password SECret.123 ---------------------------------------- Imported certificates from PKCS #12 file ----------------------------------------
7.4.6. クライアント認証を使用した OCSP pkiconsole へのログイン
-
OCSP を
authType=sslclientauth
で設定し、「クライアント認証を使用した pkiconsole ログイン設定」 に記載された手順でロールユーザー証明書をインポートします。 ロールユーザーのクライアント認証証明書を使用して
pkiconsole
にログインします。# pkiconsole -d <home .redhat-idm-console dir> -n <client cert> https://rhcs10.example.com:33443/ocsp
そして、リストからロールユーザー証明書のニックネームを選択します (例: OCSP adminV)。コンソールへのログインは成功するはずです。
7.4.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.4.7.1. CRL 公開用の LDAP サーバーの設定
rhds11.example.com で root として以下を実行します。
CA が CRL の公開に使用する Directory Server インスタンスをインストールします。Red Hat Directory Server は、LDAP/LDAPS ポート (それぞれ 12389 および 12636 ) をリッスンしています。
dscreate create-template
コマンドを使用して、選択した場所 (例:/root/pki_rsa
) にテンプレート.cfg
ファイルを作成します。# dscreate create-template /root/pki_rsa/rootca-crl-publish-ldap.cfg
前の手順で作成した
.cfg
ファイルを編集します。以下のパラメーターのコメントを解除し、インストールをカスタマイズするように設定します。full_machine_name = rhds11.example.com port = 12389 secure_port = 12636 instance_name = CC-RSA-RootCA-CRL-PUBLISH root_password = SECret.123 suffix = dc=example,dc=com create_suffix_entry = True
Directory Server インスタンスをインストールします。
# dscreate from-file /root/pki_rsa/rootca-crl-publish-ldap.cfg Starting installation... Completed installation for CC-RSA-RootCA-CRL-PUBLISH
ACI(アクセス制御命令) ルールを追加して、匿名のバインドアクセスを許可します。デフォルトでは、これは無効になっています。
選択した場所 (例:
/root/pki_rsa/dirsrv/
) に次の内容のldapaci.ldif
ファイルを作成します。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";)
ldapmodify
コマンドを実行して、ACI を追加します。# ldapmodify -x -h rhds11.example.com -p 12389 -D 'cn=Directory Manager' -W -f /root/pki_rsa/dirsrv/ldapaci.ldif
CRL 公開サブツリーを準備します。
/root/pki_rsa/dirsrv
ディレクトリーに次の内容の 2 つのファイルを作成します。rootca_pki_subtree.ldif
ファイルの場合:dn: dc=pki,dc=example,dc=com objectClass: domain dc: pki
rootca_crl_subtree.ldif
ファイルの場合:dn: dc=crl,dc=pki,dc=example,dc=com objectClass: domain dc: crl
両方のエントリーを CRL インスタンスに追加します。
# ldapadd -x -H ldap://rhds11.example.com:12389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/rootca_pki_subtree.ldif
# ldapadd -x -H ldap://rhds11.example.com:12389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/rootca_crl_subtree.ldif
7.4.7.2. RootCA での CRL 公開の設定
CRL 公開を設定するには、以下を実行します。
ca.publish.
プロパティーを追加します。RootCA インスタンスを停止します。
# pki-server stop rhcs10-RSA-RootCA
RootCA の
CS.cfg
設定ファイル (例:/var/lib/pki/rhcs10-RSA-RootCA/ca/conf/CS.cfg
) で次のプロパティーを設定します。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=12389 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
コマンドを使用してプロパティーを更新することもできます。以下に例を示します。# pki-server ca-config-set -i rhcs10-RSA-RootCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-set -i rhcs10-RSA-RootCA ca.publish.ldappublish.ldap.ldapconn.port 12389; pki-server ca-config-set -i rhcs10-RSA-RootCA 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-RootCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
上記は一例です。
ca-config-show
コマンドを使用して、パラメーターが正常に更新されたことを確認できます。以下に例を示します。# pki-server ca-config-show -i rhcs10-RSA-RootCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-show -i rhcs10-RSA-RootCA ca.publish.ldappublish.ldap.ldapconn.port 12389; pki-server ca-config-show -i rhcs10-RSA-RootCA 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-RootCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
RootCA インスタンスを起動します。
pki-server start rhcs10-RSA-RootCA
curl
を介して、CRL および CA 証明書を LDAP ディレクトリーにプッシュします。以下に例を示します。# curl \ -d "xml=true" \ --cert-type P12 \ --cert /opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12:SECret.123 \ -k \ https://rhcs10.example.com:8443/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>
CA→OCSP CRL の直接公開方式を無効にします。
RootCA を停止します。
pki-server stop rhcs10-RSA-RootCA
CA の
CS.cfg
設定ファイル (例:/var/lib/pki/rhcs10-RSA-RootCA/ca/conf/CS.cfg
) を編集し、以下をfalse
に設定します。ca.publish.rule.instance.ocsprule-<host/port info>.enable=false
以下に例を示します。
ca.publish.rule.instance.ocsprule-rhcs10-example-com-33443.enable=false
設定の変更を有効にするには、CA を起動します。
# pki-server start rhcs10-RSA-RootCA
curl
を使用して Directory Server を更新します。以下に例を示します。# curl \ -d "updateCRL=yes&updateCA=yes&xml=true" \ --cert-type P12 --cert /opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12:SECret.123 \ -k https://rhcs10.example.com:8443/ca/agent/ca/updateDir | xmllint --format -
curl
を使用して CRL を表示します。# curl \ -d "pageSize=50&crlIssuingPoint=MasterCRL&pageStart=1&crlDisplayType=entireCRL&xml=true" \ --cert-type P12 \ --cert /opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12:SECret.123 \ -k \ https://rhcs10.example.com:8443/ca/agent/ca/displayCRL | xmllint --format -
ldapsearch
を実行して、CRL と CA 証明書が LDAP ディレクトリーにプッシュされていることを確認します。# ldapsearch -x -D "cn=Directory Manager" -h "rhds11.example.com" -p 12389 -b "dc=example,dc=com" -w SECret.123
. . . 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 . . .
- RootCA の証明書公開を無効にします (オプション)。
次の手順は、以下のようなデバッグログの警告メッセージを防ぐためのものです。
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
RootCA を停止します。
# pki-server stop rhcs10-RSA-RootCA
/var/lib/pki/rhcs10-RSA-RootCA/ca/conf/CS.cfg
を編集し、以下を設定します。ca.publish.cert.enable=false
設定の変更を有効にするには、RootCA を起動します。
# pki-server start rhcs10-RSA-RootCA
7.4.7.3. LDAP サーバーから CRL を取得するように OCSP を設定する
代替の CRL 公開方法を選択した場合は、CRL を取得する場所を OCSP が認識できるように設定する必要があります。そのためには、OCSP 失効情報ストア情報を、CRL 発行 LDAP インスタンス (この章の前半で設定したインスタンス) を指すように事前に設定する必要があります。
OCSP 失効情報ストアを設定するには、以下を実行します。
OCSP を停止します。
# pki-server stop rhcs10-RSA-OCSP-rootca
OCSP の
CS.cfg
設定ファイル (例:/var/lib/pki/rhcs10-RSA-OCSP-rootca/ocsp/conf/CS.cfg
) でldapStore
プロパティーを設定します。ocsp.storeId
パラメーターをdefStore
からldapStore
に変更し、次のパラメーターを追加します。ocsp.storeId=ldapStore ocsp.store.ldapStore.numConns=1 ocsp.store.ldapStore.host0=rhds11.example.com ocsp.store.ldapStore.port0=12389 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 分ごとに行われます。オプションとして、より適切に観察するために、OCSP の
CS.cfg
設定ファイルでデバッグレベルを 0 に設定して、LDAPStore の更新がデバッグログに表示されるようにできます。それ以外では、更新がない場合にのみステータスが表示されます。debug.level=0
これを適用すると、特に OCSP システムではデバッグログのサイズが急速に増加することに注意してください。この点を考慮して、短期間のテスト期間のみに推奨されます。
OCSP を起動して、
ldapStore
設定を適用します。# pki-server start rhcs10-RSA-OCSP-rootca
7.4.7.4. CRL 公開のテスト
このセクションでは、2 つのユーザー証明書を作成し、そのうちの 1 つを取り消して、CRL の公開をテストします。次に、有効な証明書と取り消された証明書の両方を OCSP インスタンスと照合して、応答が想定どおりかどうかを確認します。
CMC 証明書の作成
user1
と user2
のエージェント署名付き CMC 証明書を作成します。CMC 要求はブートストラップ管理者証明書によって署名されます。たとえば、user1
の場合は以下を行います。
データベースの証明書をリスト表示します。
# certutil -d /root/.dogtag/pki_rsa_bootstrap/certs_db -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI PKI Bootstrap Administrator for RSA-RootCA u,u,u CA Signing Cert - rhcs10-RSA-RootCA CT,C,C . . . Output omitted . . .
PKCS10Client
ツールを使用して、PKCS10 証明書要求を生成します。# 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
キー ID を表示するには、
.keyID
ファイルでcat
を使用します。これは、次のステップのrequest.privKeyId=
フィールドで必要になります。# cat /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId; echo
CMC 要求を生成します。
前の手順で取得した PKCS#10 要求と秘密鍵 ID を使用して、
CMCRequest
設定ファイルを作成します。以下に例を示します。# vi cmcRequest_p10_user1.cfg
### 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-RootCA ### 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=<key id output from the PKCS10Client|CRMFPopClient cert request>
CMCRequest
コマンドを使用してリクエストを生成します。# 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-RootCA 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
CMC 要求を送信します。
HttpClient
設定ファイルを作成します。以下に例を示します。# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
### host: host name for the http server host=rhcs10.example.com ### port: port number port=8443 ### 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-RootCA ### servlet: servlet name servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caFullCMCUserCert
HttpClient
コマンドを使用して要求を送信します。# 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
CMCResponse
コマンドを使用して応答を処理します。# 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
-
同様に、適切な値で上記の手順を繰り返して、
user2
の証明書を作成します。
取り消しの設定
ここで、user2
証明書を取り消すための設定を行います。
CRL および CA 証明書を LDAP ディレクトリーにプッシュします。
- ブラウザーで RootCA のエージェント UI にログインします。
- Update Revocation List を選択し、Update をクリックします。
Update Directory Server をクリックして、次を選択します。
- Update the certificate revocation list to the directory (証明書失効リストのディレクトリーへの更新)
- Update Certificate Manager certificate to the directory (Certificat Manager 証明書のディレクトリーへの更新)
- Update Directory をクリックします。
-
OCSP の
ldapStore
の更新が行われるのを待ちます (/var/lib/pki/rhcs10-RSA-OCSP-rootca/ocsp/logs/debug
のデバッグファイルを確認します)。
OCSPClient
ツールを使用して証明書のステータスを確認します。たとえば、user1
の証明書のシリアル番号 (10 進数) を使用すると、次のようになります。# OCSPClient -v -d /root/.dogtag/pki_rsa_bootstrap/certs_db -h rhcs10.example.com -p 33080 -c "CA Signing Cert - rhcs10-RSA-RootCA" --serial 245832201 Initializing security database Creating request for serial number 245832201 Submitting OCSP request URL: http://rhcs10.example.com:33080/ocsp/ee/ocsp Request Length: 71 Request: MEUwQzBBMD8wPTAJBgUrDgMCGgUABBRA+gjEGo4W0lUiC/Ve/oO8CrXQLQQUK4Bf o2u6SW0p6q58dlNCXxOVw30CBA7kEiA= Response Length: 3546 Response: <blob> CertID.serialNumber=245832201 CertStatus=Good
user2
の証明書を取り消します。CMCRequest
設定ファイルを作成します。以下に例を示します。# vi cmc-agent-signed-revoke.cfg
### 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-RootCA ### 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
CMCRequest
コマンドを使用してリクエストを生成します。# 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-RootCA 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
HttpClient
設定ファイルを作成します。以下に例を示します。# vi HttpClient.revoke.agentSigned.cfg
### CA server host name. host=rhcs10.example.com ### port: port number port=8443 ### 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-RootCA ### servlet: servlet name servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caFullCMCUserCert
HttpClient
コマンドを使用して要求を送信します。# 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
CMC 応答を処理します。
# 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
検証
-
CA 署名付き監査ログ (例:
/var/log/pki/rhcs10-RSA-RootCA/ca/signedAudit/ca_audit
) で、user2
証明書が実際に取り消されたことを確認します。 次の CRL 自動更新まで待機します (更新間隔 (分単位) は RootCA の
CS.cfg
ファイルのca.crl.MasterCRL.autoUpdateInterval
で設定されており、デフォルトは 240 分に設定されています)。注記または、CRL をすぐに手動で更新する場合は、ブラウザーで RootCA のエージェント UI にログインし、次の手順を実行します。
- Update Revocation List を選択し、Update をクリックします。
Update Directory Server をクリックして、次を選択します。
- Update the certificate revocation list to the directory (証明書失効リストのディレクトリーへの更新)
-
Update Certificate Manager certificate to the directory (Certificat Manager 証明書のディレクトリーへの更新)
- Update Directory をクリックします。
ldapStore
の更新が完了したら、/var/lib/pki/rhcs10-RSA-OCSP-rootca/ocsp/logs/debug
にあるデバッグファイルを確認します。OCSPCLient
ツールを使用して、10 進数のシリアル番号でuser2
の証明書が失効していることを確認します (-c
は署名する CA のニックネームを指します)。# OCSPClient -v -d /root/.dogtag/pki_rsa_bootstrap/certs_db -h rhcs10.example.com -p 33080 -c "CA Signing Cert - rhcs10-RSA-RootCA" --serial 245832201 Initializing security database Creating request for serial number 245832201 Submitting OCSP request URL: http://rhcs10.example.com:33080/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 を再起動してください。