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 証明書) が含まれていることを確認します。
ls -l /opt/pki_rsa/ca-chain.pem cat /opt/pki_rsa/ca-chain.pem
# 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 証明書署名要求を生成します。
DS を停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dsctl slapd-CC-RSA-OCSP-subca-LDAP stop
# dsctl slapd-CC-RSA-OCSP-subca-LDAP stop
注記DS インスタンスの名前がわからない場合は、
dsctl -l
を使用してすべてのインスタンスをリスト表示します。certutil
ツールを使用して CSR を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 Copied! Toggle word wrap Toggle overflow vi /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr
# vi /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr
CSR ファイルは、"-----BEGIN CERTIFICATE REQUEST-----" の行で始まり、"-----END CERTIFICATE REQUEST-----" の行で終わる必要があります。
CA が置かれているシステムに
Server-Cert-ocsp-subca.csr
ファイルをリモートコピーします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 サーバー証明書を発行します。
CMC 要求を生成します。
CMCRequest
設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_pkcs10.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_pkcs10.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ### 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
### 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
CMCRequest
コマンドを使用してリクエストを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CMCRequest /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_pkcs10.cfg
# 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
CMC 要求を送信します。
HttpClient
設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-subca.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-subca.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ### 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
### 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
HttpClient
コマンドを使用して要求を送信します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow HttpClient /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-subca.cfg
# 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
CMC 応答を処理します。
CMCResponse
を使用して応答を処理し、チェーン内のすべての証明書を PEM 形式で個別に表示します。重要"-v" オプションを指定して CMCResponse を実行すると、チェーン内の各証明書の PEM が Cert:0、Cert:1 などとして返されます。この出力では、すべての PEM の下に、チェーン内の各証明書も整った出力形式で表示されます。証明書は決まった順序で表示されないため、チェーン内での位置を確認するには、各 "Certificate" の下にある "Subject:" を確認する必要があります。対応する PEM が上と同じ位置に表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_pkcs10.resp -v
# 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.
新しい
Server-Cert
DS 証明書を、適切な名前でブートストラップ証明書ディレクトリー (例:/root/.dogtag/pki_rsa_bootstrap/certs_db/
) 内のファイルに保存します。.pem
ファイルは、ヘッダー-----BEGIN CERTIFICATE-----
で開始し、フッター-----END CERTIFICATE-----
で終了する必要があります。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.pem
# 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 Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA" -a
# certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA" -a
新しい
Server-Cert
証明書を rhds11.example.com にリモートコピーします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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/
# 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 証明書に置き換えます。
dirsrv
ディレクトリーの内容をバックアップディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp -r /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-OCSP-subca-LDAP/
# cp -r /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-OCSP-subca-LDAP/
古い DS 証明書を削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"
# 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 Copied! Toggle word wrap Toggle overflow 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"
# 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"
新しく作成した DS 証明書とそのチェーン内の CA 証明書を 1 つずつインポートします。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 Copied! Toggle word wrap Toggle overflow 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
# 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 Copied! Toggle word wrap Toggle overflow 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
# 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
証明書をリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/
# 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
DS を起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dsctl slapd-CC-RSA-OCSP-subca-LDAP start
# dsctl slapd-CC-RSA-OCSP-subca-LDAP start
LDAP サーバーが稼働していることをテストして確認します (別のシステムの場合は、CA ホストでもテストします)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:11636 -b "dc=example,dc=com" -w SECret.123
# 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 Copied! Toggle word wrap Toggle overflow 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
# 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 インスタンスのインストール (ツーステップ方式)」 を参照してください。
前提条件
- root ユーザーとして rhcs10.example.com にログインしている。
- 「SubCA の OCSP 用 DS インスタンスのインストール」 を完了した。この例では、CC-RSA-OCSP-subca-LDAP は SubCA の OCSP の内部データベースです。
手順
選択した場所 (例:
/root/pki_rsa
) に OCSP インストールファイルを作成して、証明書要求を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /root/pki_rsa
# cd /root/pki_rsa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi ocsp_subca_inst.cfg
# vi ocsp_subca_inst.cfg
注記明示的に指定されていない限り、システム証明書のニックネームは、
pki_instance_name
に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。
以下のインストールファイルでは、例となる値を指定しています。HSM パスワードの変更に加えて、たとえばポート、ディレクトリー、ニックネーム、ドメインなどの値を適宜変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [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
[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
pkispawn
ツールを実行して、OCSP サブシステムをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -s OCSP -f ocsp_subca_inst.cfg --debug
# pkispawn -s OCSP -f ocsp_subca_inst.cfg --debug
これにより、OCSP インスタンスが
/var/lib/pki/rhcs10-RSA-OCSP-subca
に作成されます。
この OCSP をツーステップ方法を使用してインストールする場合は以下を実行します。
まず、
--skip-configuration
オプションを指定してpkispawn
ツールを実行し、SubCA の OCSP インスタンスをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-configuration --debug
# pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-configuration --debug
- 2 つのインストールステップの間に設定ファイルをカスタマイズします。
pkispawn
ツールを実行して OCSP を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-installation --debug
# pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-installation --debug
検証
インストールされている OCSP インスタンスのステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server status rhcs10-RSA-OCSP-subca
# pki-server status rhcs10-RSA-OCSP-subca
7.7.3. SubCA の OCSP pkiconsole タイムアウトを増やす
- rhcs10.example.com に root としてログインします。
SubCA の OCSP サービスを停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-OCSP-subca
pki-server stop rhcs10-RSA-OCSP-subca
/var/lib/pki/rhcs10-RSA-OCSP-subca/conf/server.xml
を編集して、タイムアウトの時間を増やします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <Connector name="Secure" port="32443" … connectionTimeout="3000000"
<Connector name="Secure" port="32443" … connectionTimeout="3000000"
SubCA の OCSP サービスを開始します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-OCSP-subca
# 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 で以下を実行します。
SubCA を停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
SubCA の
CS.cfg
を編集し、ca.defaultOcspUri
変数が OCSP を指すように設定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.defaultOcspUri=http://rhcs10.example.com:32080/ocsp/ee/ocsp
ca.defaultOcspUri=http://rhcs10.example.com:32080/ocsp/ee/ocsp
SubCA を開始します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-SubCA
# 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 Copied! Toggle word wrap Toggle overflow 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
# 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 へのログイン
-
クライアント認証を使用する pkiconsole ログインを設定する の手順に従って、
authType=sslclientauth
を使用して OCSP を設定し、ロールユーザー証明書をインポートします。 ロールユーザーのクライアント認証証明書を使用して
pkiconsole
にログインします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkiconsole -d <home .redhat-idm-console dir> -n <client cert> https://rhcs10.example.com:32443/ocsp
# 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 として以下を実行します。
CA が CRL の公開に使用する Directory Server インスタンスをインストールします。Red Hat Directory Server は、LDAP/LDAPS ポート (それぞれ 5389 および 5636) をリッスンしています。
dscreate create-template
コマンドを使用して、選択した場所 (例:/root/pki_rsa
) にテンプレート.cfg
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow dscreate create-template /root/pki_rsa/subca-crl-publish-ldap.cfg
# dscreate create-template /root/pki_rsa/subca-crl-publish-ldap.cfg
前の手順で作成した
.cfg
ファイルを編集します。以下のパラメーターのコメントを解除し、インストールをカスタマイズするように設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
Directory Server インスタンスをインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dscreate from-file /root/pki_rsa/subca-crl-publish-ldap.cfg
# dscreate from-file /root/pki_rsa/subca-crl-publish-ldap.cfg Starting installation... Completed installation for CC-RSA-SubCA-CRL-PUBLISH
ACI(アクセス制御命令) ルールを追加して、匿名のバインドアクセスを許可します。デフォルトでは、これは無効になっています。
選択した場所 (例:
/root/pki_rsa/dirsrv/
) に次の内容のldapaci.ldif
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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";)
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 を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -x -h rhds11.example.com -p 5389 -D 'cn=Directory Manager' -W -f /root/pki_rsa/dirsrv/ldapaci.ldif
# ldapmodify -x -h rhds11.example.com -p 5389 -D 'cn=Directory Manager' -W -f /root/pki_rsa/dirsrv/ldapaci.ldif
CRL 公開サブツリーを準備します。
/root/pki_rsa/dirsrv
ディレクトリーに次の内容の 2 つのファイルを作成します。subca_pki_subtree.ldif
ファイルの場合:Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: dc=pki,dc=example,dc=com objectClass: domain dc: pki
dn: dc=pki,dc=example,dc=com objectClass: domain dc: pki
subca_crl_subtree.ldif
ファイルの場合:Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: dc=crl,dc=pki,dc=example,dc=com objectClass: domain dc: crl
dn: dc=crl,dc=pki,dc=example,dc=com objectClass: domain dc: crl
両方のエントリーを CRL インスタンスに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_pki_subtree.ldif
# 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 Copied! Toggle word wrap Toggle overflow ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_crl_subtree.ldif
# 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 公開を設定するには、以下を実行します。
ca.publish.
プロパティーを追加します。SubCA インスタンスを停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
SubCA の
CS.cfg
設定ファイル (例:/var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg
) で次のプロパティーを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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.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 Copied! Toggle word wrap Toggle overflow 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
# 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 Copied! Toggle word wrap Toggle overflow 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
# 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
SubCA インスタンスを起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-SubCA
pki-server start rhcs10-RSA-SubCA
curl
を介して、CRL および CA 証明書を LDAP ディレクトリーにプッシュします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 -
# 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>
CA→OCSP CRL の直接公開方式を無効にします。
SubCA を停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
CA の
CS.cfg
設定ファイル (例:/var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg
) を編集し、以下をfalse
に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.publish.rule.instance.ocsprule-<host/port info>.enable=false
ca.publish.rule.instance.ocsprule-<host/port info>.enable=false
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.publish.rule.instance.ocsprule-rhcs10-example-com-32443.enable=false
ca.publish.rule.instance.ocsprule-rhcs10-example-com-32443.enable=false
設定の変更を有効にするには、CA を起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-SubCA
# pki-server start rhcs10-RSA-SubCA
curl
を使用して Directory Server を更新します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 -
# 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 -
curl
を使用して CRL を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 -
# 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 -
ldapsearch
を実行して、CRL と CA 証明書が LDAP ディレクトリーにプッシュされていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapsearch -x -D "cn=Directory Manager" -h "rhds11.example.com" -p 5389 -b "dc=example,dc=com" -w SECret.123
# ldapsearch -x -D "cn=Directory Manager" -h "rhds11.example.com" -p 5389 -b "dc=example,dc=com" -w SECret.123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow . . . 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 . . .
. . . 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 . . .
- SubCA の証明書公開を無効にします (オプション)。
次の手順は、以下のようなデバッグログの警告メッセージを防ぐためのものです。
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
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
SubCA を停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
/var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg
を編集し、以下を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.publish.cert.enable=false
ca.publish.cert.enable=false
設定の変更を有効にするには、SubCA を起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-SubCA
# pki-server start rhcs10-RSA-SubCA
7.7.7.3. LDAP サーバーから CRL を取得するように OCSP を設定する
代替の CRL 公開方法を選択した場合は、CRL を取得する場所を OCSP が認識できるように設定する必要があります。そのためには、OCSP 失効情報ストア情報を、CRL 発行 LDAP インスタンス (この章の前半で設定したインスタンス) を指すように事前に設定する必要があります。
OCSP 失効情報ストアを設定するには、以下を実行します。
OCSP を停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-OCSP-subca
# pki-server stop rhcs10-RSA-OCSP-subca
OCSP の
CS.cfg
設定ファイル (例:/var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/conf/CS.cfg
) でldapStore
プロパティーを設定します。ocsp.storeId
パラメーターをdefStore
からldapStore
に変更し、次のパラメーターを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 分ごとに行われます。オプションとして、より適切に観察するために、OCSP の
CS.cfg
設定ファイルでデバッグレベルを 0 に設定して、LDAPStore の更新がデバッグログに表示されるようにできます。それ以外では、更新がない場合にのみステータスが表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow debug.level=0
debug.level=0
これを適用すると、特に OCSP システムではデバッグログのサイズが急速に増加することに注意してください。この点を考慮して、短期間のテスト期間のみに推奨されます。
OCSP を起動して、
ldapStore
設定を適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-OCSP-subca
# pki-server start rhcs10-RSA-OCSP-subca
7.7.7.4. CRL 公開のテスト
このセクションでは、2 つのユーザー証明書を作成し、そのうちの 1 つを取り消して、CRL の公開をテストします。次に、有効な証明書と取り消された証明書の両方を OCSP インスタンスと照合して、応答が想定どおりかどうかを確認します。
CMC 証明書の作成
user1
と user2
のエージェント署名付き CMC 証明書を作成します。CMC 要求はブートストラップ管理者証明書によって署名されます。たとえば、user1
の場合は以下を行います。
データベースの証明書をリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -d /root/.dogtag/pki_rsa_bootstrap/certs_db -L
# 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 . . .
PKCS10Client
ツールを使用して、PKCS10 証明書要求を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 -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 Copied! Toggle word wrap Toggle overflow cat /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId; echo
# cat /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId; echo
CMC 要求を生成します。
前の手順で取得した PKCS#10 要求と秘密鍵 ID を使用して、
CMCRequest
設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi cmcRequest_p10_user1.cfg
# vi cmcRequest_p10_user1.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ### 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>
### 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>
CMCRequest
コマンドを使用してリクエストを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CMCRequest cmcRequest_p10_user1.cfg
# 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
CMC 要求を送信します。
HttpClient
設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ### 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
### 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
HttpClient
コマンドを使用して要求を送信します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow HttpClient /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
# 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
コマンドを使用して応答を処理します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.user1_pkcs10.resp
# 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 ディレクトリーにプッシュします。
- ブラウザーで SubCA のエージェント 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-subca/ocsp/logs/debug
のデバッグファイルを確認します)。
OCSPClient
ツールを使用して証明書のステータスを確認します。たとえば、user1
の証明書のシリアル番号 (10 進数) を使用すると、次のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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
user2
の証明書を取り消します。CMCRequest
設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi cmc-agent-signed-revoke.cfg
# vi cmc-agent-signed-revoke.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ### 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
### 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
CMCRequest
コマンドを使用してリクエストを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CMCRequest cmc-agent-signed-revoke.cfg
# 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
HttpClient
設定ファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi HttpClient.revoke.agentSigned.cfg
# vi HttpClient.revoke.agentSigned.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ### 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
### 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
HttpClient
コマンドを使用して要求を送信します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow HttpClient HttpClient.revoke.agentSigned.cfg
# 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 応答を処理します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CMCResponse -d /root/.dogtag/pki_rsa_bootstrap/certs_db -i /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.revoke.agentSigned.resp
# 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-SubCA/ca/signedAudit/ca_audit
) で、user2
証明書が実際に取り消されたことを確認します。 次の CRL 自動更新 (SubCA の
CS.cfg
ファイルのca.crl.MasterCRL.autoUpdateInterval
によって設定された更新間隔 (分単位)) まで待ちます。デフォルトは 240 分に設定されています)。注記または、CRL をすぐに手動で更新する場合は、ブラウザーで SubCA のエージェント 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-subca/ocsp/logs/debug
にあるデバッグファイルを確認します。OCSPCLient
ツールを使用して、10 進数のシリアル番号でuser2
の証明書が失効していることを確認します (-c
は署名する CA のニックネームを指します)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 を再起動してください。