7.6. SubCA の作成と設定 (パート I)
SubCA インスタンスをインストールして設定するには、2 つの pkispawn
メソッドの いずれか 1 つ を使用します。
このインストール例では、OCSP インスタンスを作成するため、OCSP の URL を指す AIA 拡張を持つ SubCA の非ブートストラップロールユーザー証明書と SubCA の TLS サーバー証明書を作成します。そのためには、SubCA の作成と設定を分離し、セットアップが次の順序で行われるようにします。
- SubCA をインストールします (このセクション)。
- OCSP をインストールし、目的の AIA で証明書を発行するための設定を行います。
- 非ブートストラップユーザーの作成と SubCA の一時 TLS サーバー証明書の置き換えを完了します。
7.6.1. SubCA インスタンスのインストール (シングルステップ方式)
シングルステップ方式を使用して SubCA インスタンスを設定するには、設定ファイルを作成し、pkispawn
ツールを 1 回実行する必要があります。この例では、SubCA は rhcs10.example.com (および他のインスタンス) にインストールされ、その内部ディレクトリーサーバーは rhds11.example.com にあります。SubCA 署名証明書は RootCA によって発行され、SubCA は独自のセキュリティードメインを作成します。
前提条件
- root ユーザーとして rhcs10.example.com にログインしている。
- 「SubCA の DS インスタンスのインストール」 を完了した。この例では、CC-RSA-SubCA-LDAP は SubCA の内部データベースです。
手順
選択した場所 (例:
/root/pki_rsa
) に SubCA インストールファイルを作成します。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 subca_inst.cfg
# vi subca_inst.cfg
注記明示的に指定されていない限り、システム証明書のニックネームは、
pki_instance_name
に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。
以下のインストールファイルでは、例となる値を指定しています。HSM パスワードの変更に加えて、たとえばポート、ディレクトリー、ニックネーム、ドメインなどの値を適宜変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=rhcs10-RSA-SubCA pki_https_port=31443 pki_http_port=31080 ### 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-SubCA/ca_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-SubCA/certs_db pki_client_database_password=SECret.123 pki_client_dir=/opt/pki_rsa/rhcs10-RSA-SubCA pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=7389 pki_ds_ldaps_port=7636 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/temp-dirsrv-subca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate [Tomcat] pki_ajp_port=31009 pki_tomcat_server_port=31005 [CA] pki_subordinate=True pki_issuing_ca_https_port=8443 pki_issuing_ca_hostname=rhcs10.example.com pki_issuing_ca=https://rhcs10.example.com:8443 ### New Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_subordinate_create_new_security_domain=True pki_subordinate_security_domain_name=Example-rhcs10-RSA-SubCA pki_import_admin_cert=False pki_admin_nickname=PKI Bootstrap Administrator for RSA-SubCA pki_admin_name=caadmin pki_admin_uid=caadmin pki_admin_email=caadmin@example.com pki_ca_signing_token=NHSM-CONN-XC pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=3072 pki_ca_signing_key_type=rsa pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s pki_ca_signing_signing_algorithm=SHA256withRSA 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_ds_hostname=rhds11.example.com pki_ds_base_dn=dc=RSA-SubCA pki_ds_database=CC-RSA-SubCA-LDAP pki_share_db=False ### Enable random serial numbers pki_random_serial_numbers_enable=True
[DEFAULT] pki_instance_name=rhcs10-RSA-SubCA pki_https_port=31443 pki_http_port=31080 ### 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-SubCA/ca_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-SubCA/certs_db pki_client_database_password=SECret.123 pki_client_dir=/opt/pki_rsa/rhcs10-RSA-SubCA pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=7389 pki_ds_ldaps_port=7636 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/temp-dirsrv-subca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate [Tomcat] pki_ajp_port=31009 pki_tomcat_server_port=31005 [CA] pki_subordinate=True pki_issuing_ca_https_port=8443 pki_issuing_ca_hostname=rhcs10.example.com pki_issuing_ca=https://rhcs10.example.com:8443 ### New Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_subordinate_create_new_security_domain=True pki_subordinate_security_domain_name=Example-rhcs10-RSA-SubCA pki_import_admin_cert=False pki_admin_nickname=PKI Bootstrap Administrator for RSA-SubCA pki_admin_name=caadmin pki_admin_uid=caadmin pki_admin_email=caadmin@example.com pki_ca_signing_token=NHSM-CONN-XC pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=3072 pki_ca_signing_key_type=rsa pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s pki_ca_signing_signing_algorithm=SHA256withRSA 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_ds_hostname=rhds11.example.com pki_ds_base_dn=dc=RSA-SubCA pki_ds_database=CC-RSA-SubCA-LDAP pki_share_db=False ### Enable random serial numbers pki_random_serial_numbers_enable=True
pkispawn
ツールを実行して、RHCS SubCA インスタンスをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -s CA -f subca_inst.cfg --debug
# pkispawn -s CA -f subca_inst.cfg --debug
これにより、SubCA インスタンスが
/var/lib/pki/rhcs10-RSA-SubCA
に作成されます。
検証手順
インストールされている CA のステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server status rhcs10-RSA-SubCA
# pki-server status rhcs10-RSA-SubCA
Unsecure EE、Secure EE、Agent、Admin、および pkiconsole の URL を書き留めます。
次のコマンドを実行して、CA の正常性を確認します。証明書が表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -p 31443 -h rhcs10.example.com ca-cert-find
# pki -p 31443 -h rhcs10.example.com ca-cert-find
次のように、pki コマンドを使用して SubCA に初めて接続すると、信頼されていない CA 署名証明書の発行者として警告が表示されます。
WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' Trust this certificate (y/N)?
WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA'
Trust this certificate (y/N)?
サブジェクト DN が想定したホスト名と一致する場合は、‘y’ を選択して CA 署名証明書を信頼します。警告は再度表示されなくなります。
このセクション (シングルステップ方式) を完了したら、「CA 証明書チェーンを更新する」 に進んで SubCA をインストールします。
7.6.2. SubCA インスタンスのインストール (ツーステップ方式)
ツーステップ方式を使用して SubCA インスタンスを設定するには、設定ファイルを作成し、pkispawn
ツールを 2 回実行する必要があります。
この例では、SubCA は rhcs10.example.com にインストールされます。
前提条件
- root ユーザーとして rhcs10.example.com にログインしている。
- 「SubCA の DS インスタンスのインストール」 を完了した。この例では、CC-RSA-SubCA-LDAP は SubCA の内部データベースです。
SubCA インストールのステップ 1
RHCS インスタンス (rhcs10.example.com) をホストするマシンで、選択した場所 (例:
/root/pki_rsa
) に CA インストールファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /root/pki_rsa vi subca_inst.cfg
# cd /root/pki_rsa # vi subca_inst.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=rhcs10-RSA-SubCA pki_https_port=31443 pki_http_port=31080 ### 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-SubCA/ca_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-SubCA/certs_db pki_client_database_password=SECret.123 pki_client_dir=/opt/pki_rsa/rhcs10-RSA-SubCA pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=7389 pki_ds_ldaps_port=7636 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/temp-dirsrv-subca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate [Tomcat] pki_ajp_port=31009 pki_tomcat_server_port=31005 [CA] pki_subordinate=True pki_issuing_ca_https_port=8443 pki_issuing_ca_hostname=rhcs10.example.com pki_issuing_ca=https://rhcs10.example.com:8443 ### New Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_subordinate_create_new_security_domain=True pki_subordinate_security_domain_name=Example-rhcs10-RSA-SubCA pki_import_admin_cert=False pki_admin_nickname=PKI Bootstrap Administrator for RSA-SubCA pki_admin_name=caadmin pki_admin_uid=caadmin pki_admin_email=caadmin@example.com pki_ca_signing_token=NHSM-CONN-XC pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=3072 pki_ca_signing_key_type=rsa pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s pki_ca_signing_signing_algorithm=SHA256withRSA 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_ds_hostname=rhds11.example.com pki_ds_base_dn=dc=RSA-SubCA pki_ds_database=CC-RSA-SubCA-LDAP pki_share_db=False ### Enable random serial numbers pki_random_serial_numbers_enable=True
[DEFAULT] pki_instance_name=rhcs10-RSA-SubCA pki_https_port=31443 pki_http_port=31080 ### 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-SubCA/ca_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-SubCA/certs_db pki_client_database_password=SECret.123 pki_client_dir=/opt/pki_rsa/rhcs10-RSA-SubCA pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=7389 pki_ds_ldaps_port=7636 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/temp-dirsrv-subca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate [Tomcat] pki_ajp_port=31009 pki_tomcat_server_port=31005 [CA] pki_subordinate=True pki_issuing_ca_https_port=8443 pki_issuing_ca_hostname=rhcs10.example.com pki_issuing_ca=https://rhcs10.example.com:8443 ### New Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_subordinate_create_new_security_domain=True pki_subordinate_security_domain_name=Example-rhcs10-RSA-SubCA pki_import_admin_cert=False pki_admin_nickname=PKI Bootstrap Administrator for RSA-SubCA pki_admin_name=caadmin pki_admin_uid=caadmin pki_admin_email=caadmin@example.com pki_ca_signing_token=NHSM-CONN-XC pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=3072 pki_ca_signing_key_type=rsa pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s pki_ca_signing_signing_algorithm=SHA256withRSA 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_ds_hostname=rhds11.example.com pki_ds_base_dn=dc=RSA-SubCA pki_ds_database=CC-RSA-SubCA-LDAP pki_share_db=False ### Enable random serial numbers pki_random_serial_numbers_enable=True
注記明示的に指定されていない限り、システム証明書のニックネームは、
pki_instance_name
に指定された値を使用して自動的に名前が付けられます。共有 HSM での証明書のニックネームの競合を回避するには、インスタンスを作成するたびに一意のインスタンス名を使用します。ただし、ツーステップインストールでは、両方のファイルのpki_instance_name
値が一致する必要があります。以下の値は例として使用しています。pkispawn
ツールを実行して、RHCS CA インスタンスをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -s CA -f subca_inst.cfg --skip-configuration --debug
# pkispawn -s CA -f subca_inst.cfg --skip-configuration --debug
ステップ間の設定
ステップ間のカスタマイズ で説明したとおり、システム証明書の証明書プロファイルなど、特定の項目をカスタマイズできます。
CA 署名証明書のサブジェクトキー識別子拡張メッセージダイジェストアルゴリズムを設定します。
この CA の署名証明書の登録プロファイルを開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/caCert.profile
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/caCert.profile
次のパラメーターを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 7.default.params.messageDigest=SHA-256
7.default.params.messageDigest=SHA-256
- ファイルを保存します。
同様に、この CA が今後発行する CA 署名証明書に対しても同じ操作を行います。
CA 署名証明書の登録プロファイルを開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caInstallCACert.cfg
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caInstallCACert.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCcaCert.cfg
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCcaCert.cfg
次のパラメーターを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow policyset.caCertSet.8.default.params.messageDigest=SHA-256
policyset.caCertSet.8.default.params.messageDigest=SHA-256
- ファイルを保存します。
ステップ間のその他の設定変更もここで実行できます。たとえば、このサブシステムの監査署名証明書の有効期間を延長する場合は、以下を実行します。
対応する設定ファイルを開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caInternalAuthAuditSigningCert.cfg
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caInternalAuthAuditSigningCert.cfg
次の範囲パラメーターを目的の値に変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow policyset.auditSigningCertSet.2.constraint.params.range=720 policyset.auditSigningCertSet.2.default.params.range=720
policyset.auditSigningCertSet.2.constraint.params.range=720 policyset.auditSigningCertSet.2.default.params.range=720
-
ファイルを保存します。次のセクションに示す
pkispawn
のステップ 2 を実行すると、このサブシステムの監査署名証明書の有効性が、変更した値と一致するはずです。
SubCA インストールのステップ 2
この場合の pkispawn
のステップ 2 では、同じファイルに対して別の方法でツールを実行し、RHCS CA インスタンスを設定します。
CA を設定するには、
pkispawn
ツールを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -s CA -f subca_inst.cfg --skip-installation --debug
# pkispawn -s CA -f subca_inst.cfg --skip-installation --debug
検証手順
インストールされている CA のステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server status rhcs10-RSA-SubCA
# pki-server status rhcs10-RSA-SubCA
Unsecure EE、Secure EE、Agent、Admin、および pkiconsole の URL を書き留めます。
次のコマンドを実行して、CA の正常性を確認します。証明書が表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -p 8443 -h rhcs10.example.com ca-cert-find
# pki -p 8443 -h rhcs10.example.com ca-cert-find
次のように、pki コマンドを使用して SubCA に初めて接続すると、信頼されていない CA 署名証明書の発行者として警告が表示されます。
WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' Trust this certificate (y/N)?
WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA'
Trust this certificate (y/N)?
サブジェクト DN が想定したホスト名と一致する場合は、y
を選択して CA 署名証明書を信頼します。警告は再度表示されなくなります。
7.6.3. CA 証明書チェーンを更新する
これまでの手順で、RootCA 証明書を含む /opt/pki_rsa/ca-chain.pem
ファイルを作成しています。ここでは、SubCA 証明書を追加して、この CA チェーンを更新する必要があります。
SubCA 証明書を取得し、
.pem
ファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/rhcs10-RSA-SubCA/alias -n "CA Signing Cert - rhcs10-RSA-SubCA" -a > /opt/pki_rsa/subCA.pem
# certutil -L -d /var/lib/pki/rhcs10-RSA-SubCA/alias -n "CA Signing Cert - rhcs10-RSA-SubCA" -a > /opt/pki_rsa/subCA.pem
CA 証明書チェーンを更新します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /opt/pki_rsa/subCA.pem /opt/pki_rsa/rootCA.pem > /opt/pki_rsa/ca-chain.pem
# cat /opt/pki_rsa/subCA.pem /opt/pki_rsa/rootCA.pem > /opt/pki_rsa/ca-chain.pem
このサンプルインストールのコンテキストでは、証明書チェーンの順序は次のようにする必要があります。
-
チェーンは、
.pem
ファイルの最上位に配置されたリーフ証明書から始まります。 - 次にその即時署名証明書が続きます。
- チェーンは、最下位のルート証明書で終了します。
ファイルを rhds11.example.com (DS インスタンスをホストするマシン) にコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp /opt/pki_rsa/subCA.pem root@rhds11.example.com:/opt/pki_rsa
# scp /opt/pki_rsa/subCA.pem root@rhds11.example.com:/opt/pki_rsa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp /opt/pki_rsa/ca-chain.pem root@rhds11.example.com:/opt/pki_rsa
# scp /opt/pki_rsa/ca-chain.pem root@rhds11.example.com:/opt/pki_rsa
SubCA の DS インスタンスを再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dsctl slapd-CC-RSA-SubCA-LDAP restart
# dsctl slapd-CC-RSA-SubCA-LDAP restart
7.6.4. SubCA ブートストラップ管理者証明書の設定
この手順では、ロールユーザー証明書の CMC 完全要求に署名する準備として、SubCA ブートストラップ証明書/キーを nssdb (この例では /root/.dogtag/pki_rsa_bootstrap/certs_db
) にインポートします。
オプション: これを実行したことがない場合は、RootCA 署名証明書を nssdb にインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-RootCA" --ca-cert /opt/pki_rsa/rootCA.pem
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-RootCA" --ca-cert /opt/pki_rsa/rootCA.pem
SubCA 署名証明書を nssdb にインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-SubCA" --ca-cert /opt/pki_rsa/subCA.pem
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-SubCA" --ca-cert /opt/pki_rsa/subCA.pem
SubCA ブートストラップ証明書を nssdb にインポートします。
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-SubCA/ca_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-SubCA/ca_admin_cert.p12 --pkcs12-password SECret.123 ---------------------------------------- Imported certificates from PKCS #12 file ----------------------------------------
検証:
nssdb の内容をリスト表示します。
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 CA Signing Cert - rhcs10-RSA-RootCA CT,C,C PKI Bootstrap Administrator for RSA-RootCA u,u,u CA Signing Cert - rhcs10-RSA-SubCA CT,C,C PKI Bootstrap Administrator for RSA-SubCA u,u,u
7.6.5. CMC 以外およびインストール以外のプロファイルの無効化
プロファイルは /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/
に保存されます。"CMC" プロファイルには、プロファイル ID に CMC が含まれています。このセクションでは、CMC とインストール以外のプロファイルを無効にする手順を説明します。
手順
編集する CMC 以外のプロファイルのリストを生成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ls /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca | grep -v CMC | grep -v Install | grep -v caInternal | grep -v caECInternal | grep -v caAdminCert | grep -v caECAdminCert | tee /root/pki_rsa/subca-profile-deletelist.txt
# ls /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca | grep -v CMC | grep -v Install | grep -v caInternal | grep -v caECInternal | grep -v caAdminCert | grep -v caECAdminCert | tee /root/pki_rsa/subca-profile-deletelist.txt
SubCA インスタンスを停止します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server stop rhcs10-RSA-SubCA
pki-server stop rhcs10-RSA-SubCA
リスト内のすべてのプロファイルについて、
visible
とenable
パラメーターをtrue
からfalse
に変更します。たとえば、次のコマンドを使用して、visible=false
およびenable=false
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /root/pki_rsa/subca-profile-deletelist.txt | while read line; do sed -i 's/^visible=true/visible=false/g' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/$line; sed -i 's/^enable=true/enable=false/g' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/$line; done
# cat /root/pki_rsa/subca-profile-deletelist.txt | while read line; do sed -i 's/^visible=true/visible=false/g' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/$line; sed -i 's/^enable=true/enable=false/g' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/$line; done
さらに、
caCMCUserCert
プロファイルのvisible
パラメーターもfalse
に変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sed -i 's/^visible=true/visible=false/' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCUserCert.cfg /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECUserCert.cfg
# sed -i 's/^visible=true/visible=false/' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCUserCert.cfg /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECUserCert.cfg
SubCA インスタンスを起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server start rhcs10-RSA-SubCA
pki-server start rhcs10-RSA-SubCA
SubCA ロールユーザー証明書に OCSP インスタンスを指す AIA 拡張 (次のセクションで作成する) を格納できるように、OCSP インスタンスの作成後、関連するセクション (「SubCA の作成と設定 (パート II)」) が配置されます。
7.6.6. CRL 配布ポイントのサポートを設定する
CRL 配布ポイントの詳細、その必要性、最適な配置場所は、「CA での自動失効チェックの有効化」 を参照してください。
CRL 配布ポイントのサポートを設定するために、例として、ファイルベースの CRL パブリッシャーと CRL のパーティショニングの設定方法を説明します。また、証明書登録プロファイルを有効化し、CRL 配布ポイント拡張機能を使用して証明書を発行する方法も説明します。最後に、CA の LDAP サーバーの一時的な Server-Cert を、CRL 配布ポイントプロファイルから発行された証明書に置き換える方法を説明します。
次の変更に進む前に、SubCA インスタンスを停止します。
pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
7.6.6.1. サーバー証明書 CRL ファイルの公開をサポートする CA セットアップ
編集する前の設定ファイルのコピーを保存してから次に進んでください。
cp /var/lib/pki/rhcs10-RSA-SubCA/conf/CS.cfg /var/lib/pki/rhcs10-RSA-SubCA/conf/CS.cfg.bak.<date>
# cp /var/lib/pki/rhcs10-RSA-SubCA/conf/CS.cfg /var/lib/pki/rhcs10-RSA-SubCA/conf/CS.cfg.bak.<date>
7.6.6.1.1. ファイルベースのパブリッシャーを設定する: crlFilePublisher
このセクションの設定では、crlFilePublisher と呼ばれるファイルベースの CRL パブリッシャーが作成されます。正しく設定されている場合、CRL は /var/lib/pki/rhcs10-RSA-SubCA/crl
ディレクトリーに DER 形式で保存されます。
ファイルベースのパーティション化された CRL を公開するための CRL ディレクトリーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /var/lib/pki/rhcs10-RSA-SubCA/crl chown pkiuser.pkiuser /var/lib/pki/rhcs10-RSA-SubCA/crl
# mkdir /var/lib/pki/rhcs10-RSA-SubCA/crl # chown pkiuser.pkiuser /var/lib/pki/rhcs10-RSA-SubCA/crl
CA の
CS.cfg
に以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.publish.publisher.instance.crlFilePublisher.Filename.b64=false ca.publish.publisher.instance.crlFilePublisher.Filename.der=true ca.publish.publisher.instance.crlFilePublisher.crlLinkExt=crl ca.publish.publisher.instance.crlFilePublisher.directory=/var/lib/pki/rhcs10-RSA-SubCA/crl ca.publish.publisher.instance.crlFilePublisher.latestCrlLink=true ca.publish.publisher.instance.crlFilePublisher.maxAge=0 ca.publish.publisher.instance.crlFilePublisher.maxFullCRLs=0 ca.publish.publisher.instance.crlFilePublisher.pluginName=FileBasedPublisher ca.publish.publisher.instance.crlFilePublisher.timeStamp=LocalTime ca.publish.publisher.instance.crlFilePublisher.zipCRLs=false ca.publish.publisher.instance.crlFilePublisher.zipLevel=9
ca.publish.publisher.instance.crlFilePublisher.Filename.b64=false ca.publish.publisher.instance.crlFilePublisher.Filename.der=true ca.publish.publisher.instance.crlFilePublisher.crlLinkExt=crl ca.publish.publisher.instance.crlFilePublisher.directory=/var/lib/pki/rhcs10-RSA-SubCA/crl ca.publish.publisher.instance.crlFilePublisher.latestCrlLink=true ca.publish.publisher.instance.crlFilePublisher.maxAge=0 ca.publish.publisher.instance.crlFilePublisher.maxFullCRLs=0 ca.publish.publisher.instance.crlFilePublisher.pluginName=FileBasedPublisher ca.publish.publisher.instance.crlFilePublisher.timeStamp=LocalTime ca.publish.publisher.instance.crlFilePublisher.zipCRLs=false ca.publish.publisher.instance.crlFilePublisher.zipLevel=9
7.6.6.1.2. ファイルベースの公開ルールを設定する: FileCrlRule
このセクションの設定では、FileCrlRule と呼ばれるファイルベースの公開ルールが作成されます。述語は、ServerCertCRL と呼ばれるパーティション化された CRL の CRL 発行ポイントを指定します (「プロファイル経由で発行された証明書の CRL パーティション設定をセットアップする」 で定義)。
CA の
CS.cfg
に以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.publish.rule.instance.FileCrlRule.enable=true ca.publish.rule.instance.FileCrlRule.mapper=NoMap ca.publish.rule.instance.FileCrlRule.pluginName=Rule ca.publish.rule.instance.FileCrlRule.predicate=issuingPointId==ServerCertCRL ca.publish.rule.instance.FileCrlRule.publisher=crlFilePublisher ca.publish.rule.instance.FileCrlRule.type=crl
ca.publish.rule.instance.FileCrlRule.enable=true ca.publish.rule.instance.FileCrlRule.mapper=NoMap ca.publish.rule.instance.FileCrlRule.pluginName=Rule ca.publish.rule.instance.FileCrlRule.predicate=issuingPointId==ServerCertCRL ca.publish.rule.instance.FileCrlRule.publisher=crlFilePublisher ca.publish.rule.instance.FileCrlRule.type=crl
7.6.6.1.3. LDAP ベースの公開ルールを変更する: LdapCrlRule
この設定では、マスター (完全) CRL に述語 LdapCrlRule を明示的に設定します。適切な OCSP サポートのために、マスター CRL は OCSP レスポンダーに継続的に提供されます。
CA の
CS.cfg
で以下を変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.publish.rule.instance.LdapCrlRule.predicate=issuingPointId==MasterCRL
ca.publish.rule.instance.LdapCrlRule.predicate=issuingPointId==MasterCRL
7.6.6.1.4. プロファイル経由で発行された証明書の CRL パーティション設定をセットアップする
このセクションの設定は、上記で定義した FileCrlRule で利用できる小さなサブセットに CRL を分割する方法を示しています。CRL は、profileList パラメーターで指定された証明書登録プロファイルによってパーティション化されます。複数のプロファイルには、コンマ区切りのリストを使用できます (例: caCMCserverCertWithCRLDP.cfg および caCMCECserverCertWithCRLDP.cfg)。
CA の
CS.cfg
に以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.crl.ServerCertCRL.allowExtensions=true ca.crl.ServerCertCRL.alwaysUpdate=false ca.crl.ServerCertCRL.autoUpdateInterval=240 ca.crl.ServerCertCRL.caCertsOnly=false ca.crl.ServerCertCRL.cacheUpdateInterval=15 ca.crl.ServerCertCRL.class=com.netscape.ca.CRLIssuingPoint ca.crl.ServerCertCRL.dailyUpdates=1:00 ca.crl.ServerCertCRL.description=CA's Certificate Revocation List containing certificates issued via the caCMCserverCertWithCRLDP and caCMCECserverCertWithCRLDP enrollment profile ca.crl.ServerCertCRL.enable=true ca.crl.ServerCertCRL.enableCRLCache=false ca.crl.ServerCertCRL.enableCRLUpdates=true ca.crl.ServerCertCRL.enableCacheRecovery=true ca.crl.ServerCertCRL.enableCacheTesting=false ca.crl.ServerCertCRL.enableDailyUpdates=true ca.crl.ServerCertCRL.enableUpdateInterval=true ca.crl.ServerCertCRL.extendedNextUpdate=true ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessLocation0="" ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessLocationType0=URI ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessMethod0=caIssuers ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.class=com.netscape.cms.crl.CMSAuthInfoAccessExtension ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.critical=false ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.enable=false ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.numberOfAccessDescriptions=1 ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.type=CRLExtension ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.class=com.netscape.cms.crl.CMSAuthorityKeyIdentifierExtension ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.critical=false ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.enable=false ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.type=CRLExtension ca.crl.ServerCertCRL.extension.CRLNumber.class=com.netscape.cms.crl.CMSCRLNumberExtension ca.crl.ServerCertCRL.extension.CRLNumber.critical=false ca.crl.ServerCertCRL.extension.CRLNumber.enable=true ca.crl.ServerCertCRL.extension.CRLNumber.type=CRLExtension ca.crl.ServerCertCRL.extension.CRLReason.class=com.netscape.cms.crl.CMSCRLReasonExtension ca.crl.ServerCertCRL.extension.CRLReason.critical=false ca.crl.ServerCertCRL.extension.CRLReason.enable=true ca.crl.ServerCertCRL.extension.CRLReason.type=CRLEntryExtension ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.class=com.netscape.cms.crl.CMSDeltaCRLIndicatorExtension ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.critical=true ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.enable=false ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.type=CRLExtension ca.crl.ServerCertCRL.extension.FreshestCRL.class=com.netscape.cms.crl.CMSFreshestCRLExtension ca.crl.ServerCertCRL.extension.FreshestCRL.critical=false ca.crl.ServerCertCRL.extension.FreshestCRL.enable=false ca.crl.ServerCertCRL.extension.FreshestCRL.numPoints=0 ca.crl.ServerCertCRL.extension.FreshestCRL.pointName0="" ca.crl.ServerCertCRL.extension.FreshestCRL.pointType0="" ca.crl.ServerCertCRL.extension.FreshestCRL.type=CRLExtension ca.crl.ServerCertCRL.extension.InvalidityDate.class=com.netscape.cms.crl.CMSInvalidityDateExtension ca.crl.ServerCertCRL.extension.InvalidityDate.critical=false ca.crl.ServerCertCRL.extension.InvalidityDate.enable=true ca.crl.ServerCertCRL.extension.InvalidityDate.type=CRLEntryExtension ca.crl.ServerCertCRL.extension.IssuerAlternativeName.class=com.netscape.cms.crl.CMSIssuerAlternativeNameExtension ca.crl.ServerCertCRL.extension.IssuerAlternativeName.critical=false ca.crl.ServerCertCRL.extension.IssuerAlternativeName.enable=false ca.crl.ServerCertCRL.extension.IssuerAlternativeName.name0="" ca.crl.ServerCertCRL.extension.IssuerAlternativeName.nameType0="" ca.crl.ServerCertCRL.extension.IssuerAlternativeName.numNames=0 ca.crl.ServerCertCRL.extension.IssuerAlternativeName.type=CRLExtension ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.class=com.netscape.cms.crl.CMSIssuingDistributionPointExtension ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.critical=true ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.enable=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.indirectCRL=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlyContainsCACerts=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlyContainsUserCerts=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlySomeReasons="" ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.pointName= ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.pointType= ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.type=CRLExtension ca.crl.ServerCertCRL.includeExpiredCerts=false ca.crl.ServerCertCRL.includeExpiredCertsOneExtraTime=false ca.crl.ServerCertCRL.minUpdateInterval=0 ca.crl.ServerCertCRL.nextAsThisUpdateExtension=0 ca.crl.ServerCertCRL.nextUpdateGracePeriod=0 ca.crl.ServerCertCRL.profileCertsOnly=true ca.crl.ServerCertCRL.profileList=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP ca.crl.ServerCertCRL.publishOnStart=false ca.crl.ServerCertCRL.saveMemory=false ca.crl.ServerCertCRL.signingAlgorithm=SHA256withRSA ca.crl.ServerCertCRL.updateSchema=1
ca.crl.ServerCertCRL.allowExtensions=true ca.crl.ServerCertCRL.alwaysUpdate=false ca.crl.ServerCertCRL.autoUpdateInterval=240 ca.crl.ServerCertCRL.caCertsOnly=false ca.crl.ServerCertCRL.cacheUpdateInterval=15 ca.crl.ServerCertCRL.class=com.netscape.ca.CRLIssuingPoint ca.crl.ServerCertCRL.dailyUpdates=1:00 ca.crl.ServerCertCRL.description=CA's Certificate Revocation List containing certificates issued via the caCMCserverCertWithCRLDP and caCMCECserverCertWithCRLDP enrollment profile ca.crl.ServerCertCRL.enable=true ca.crl.ServerCertCRL.enableCRLCache=false ca.crl.ServerCertCRL.enableCRLUpdates=true ca.crl.ServerCertCRL.enableCacheRecovery=true ca.crl.ServerCertCRL.enableCacheTesting=false ca.crl.ServerCertCRL.enableDailyUpdates=true ca.crl.ServerCertCRL.enableUpdateInterval=true ca.crl.ServerCertCRL.extendedNextUpdate=true ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessLocation0="" ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessLocationType0=URI ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessMethod0=caIssuers ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.class=com.netscape.cms.crl.CMSAuthInfoAccessExtension ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.critical=false ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.enable=false ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.numberOfAccessDescriptions=1 ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.type=CRLExtension ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.class=com.netscape.cms.crl.CMSAuthorityKeyIdentifierExtension ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.critical=false ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.enable=false ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.type=CRLExtension ca.crl.ServerCertCRL.extension.CRLNumber.class=com.netscape.cms.crl.CMSCRLNumberExtension ca.crl.ServerCertCRL.extension.CRLNumber.critical=false ca.crl.ServerCertCRL.extension.CRLNumber.enable=true ca.crl.ServerCertCRL.extension.CRLNumber.type=CRLExtension ca.crl.ServerCertCRL.extension.CRLReason.class=com.netscape.cms.crl.CMSCRLReasonExtension ca.crl.ServerCertCRL.extension.CRLReason.critical=false ca.crl.ServerCertCRL.extension.CRLReason.enable=true ca.crl.ServerCertCRL.extension.CRLReason.type=CRLEntryExtension ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.class=com.netscape.cms.crl.CMSDeltaCRLIndicatorExtension ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.critical=true ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.enable=false ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.type=CRLExtension ca.crl.ServerCertCRL.extension.FreshestCRL.class=com.netscape.cms.crl.CMSFreshestCRLExtension ca.crl.ServerCertCRL.extension.FreshestCRL.critical=false ca.crl.ServerCertCRL.extension.FreshestCRL.enable=false ca.crl.ServerCertCRL.extension.FreshestCRL.numPoints=0 ca.crl.ServerCertCRL.extension.FreshestCRL.pointName0="" ca.crl.ServerCertCRL.extension.FreshestCRL.pointType0="" ca.crl.ServerCertCRL.extension.FreshestCRL.type=CRLExtension ca.crl.ServerCertCRL.extension.InvalidityDate.class=com.netscape.cms.crl.CMSInvalidityDateExtension ca.crl.ServerCertCRL.extension.InvalidityDate.critical=false ca.crl.ServerCertCRL.extension.InvalidityDate.enable=true ca.crl.ServerCertCRL.extension.InvalidityDate.type=CRLEntryExtension ca.crl.ServerCertCRL.extension.IssuerAlternativeName.class=com.netscape.cms.crl.CMSIssuerAlternativeNameExtension ca.crl.ServerCertCRL.extension.IssuerAlternativeName.critical=false ca.crl.ServerCertCRL.extension.IssuerAlternativeName.enable=false ca.crl.ServerCertCRL.extension.IssuerAlternativeName.name0="" ca.crl.ServerCertCRL.extension.IssuerAlternativeName.nameType0="" ca.crl.ServerCertCRL.extension.IssuerAlternativeName.numNames=0 ca.crl.ServerCertCRL.extension.IssuerAlternativeName.type=CRLExtension ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.class=com.netscape.cms.crl.CMSIssuingDistributionPointExtension ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.critical=true ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.enable=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.indirectCRL=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlyContainsCACerts=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlyContainsUserCerts=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlySomeReasons="" ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.pointName= ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.pointType= ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.type=CRLExtension ca.crl.ServerCertCRL.includeExpiredCerts=false ca.crl.ServerCertCRL.includeExpiredCertsOneExtraTime=false ca.crl.ServerCertCRL.minUpdateInterval=0 ca.crl.ServerCertCRL.nextAsThisUpdateExtension=0 ca.crl.ServerCertCRL.nextUpdateGracePeriod=0 ca.crl.ServerCertCRL.profileCertsOnly=true ca.crl.ServerCertCRL.profileList=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP ca.crl.ServerCertCRL.publishOnStart=false ca.crl.ServerCertCRL.saveMemory=false ca.crl.ServerCertCRL.signingAlgorithm=SHA256withRSA ca.crl.ServerCertCRL.updateSchema=1
ECC CA の場合は、SHA512withEC に以下を設定します。
ca.crl.ServerCertCRL.signingAlgorithm=SHA512withEC
ca.crl.ServerCertCRL.signingAlgorithm=SHA512withEC
7.6.6.2. CA で CRL HTTP サービスを設定する
CRL 配布ポイントが提供する CRL はファイルに公開されます (上記のセクションを参照)。このファイルは、以下に示すように CA の server.xml
に追加している非 SSL Tomcat サービスによって提供されます。
/var/lib/pki/rhcs10-RSA-SubCA/conf/server.xml
ファイルで、Catalina
サービスの 前に 次のCRL
サービスを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <Service name="CRL"> <Connector port="31085" protocol="HTTP/1.1" connectionTimeout="80000" maxParameterCount="1000" name="Unsecure" maxHttpHeaderSize="8192" acceptCount="100" maxThreads="15" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true"/> <Engine name="CRL" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_crl_access_log" suffix=".txt" pattern="common"/> </Host> </Engine> </Service>
<Service name="CRL"> <Connector port="31085" protocol="HTTP/1.1" connectionTimeout="80000" maxParameterCount="1000" name="Unsecure" maxHttpHeaderSize="8192" acceptCount="100" maxThreads="15" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true"/> <Engine name="CRL" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_crl_access_log" suffix=".txt" pattern="common"/> </Host> </Engine> </Service>
上記の CRL サービスでは、使用されていないコネクターポート番号を選択します。たとえば、下位 CA の HTTP ポートが 31080 の場合は、31085 を選択します。SELinux 用のポートが追加されていることを確認します。以下は遅の例です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow semanage port -a -t http_port_t -p tcp 31085 firewall-cmd --permanent --add-port=31085/tcp firewall-cmd --reload
# semanage port -a -t http_port_t -p tcp 31085 # firewall-cmd --permanent --add-port=31085/tcp # firewall-cmd --reload
注記選択したポートが別の SELinux コンテキストに事前に割り当てられている場合は、次のようなエラーメッセージが表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ValueError: Port tcp/31085 already defined
ValueError: Port tcp/31085 already defined
次のコマンドを使用して、CRL HTTP ポートが事前に割り当てられているかどうかを検索して確認することもできます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow semanage port -l | grep <port>
# semanage port -l | grep <port>
割り当て済みの場合は別のポートを選択することが推奨されます。しかし、同じポートを使用する必要がある場合は、次の操作を実行できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow semanage port -m -t http_port_t -p tcp 31085
# semanage port -m -t http_port_t -p tcp 31085
サーバーを再起動すると、CA の conf ディレクトリーの下に CRL/localhost ディレクトリーが作成されます (存在しない場合に限る)。ただし、
crl.xml
ファイルの追加を準備するために、次の手順を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir -p /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost
# mkdir -p /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost # chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost
/var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost
の下にcrl.xml
ファイルを作成し、次のコンテンツを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <Context docBase="/var/lib/pki/rhcs10-RSA-SubCA/crl"> <Resources allowLinking="true" cachingAllowed="false" /> </Context>
<Context docBase="/var/lib/pki/rhcs10-RSA-SubCA/crl"> <Resources allowLinking="true" cachingAllowed="false" /> </Context>
crl.xml
ファイルのuser:group
所有権を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow chown pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost/crl.xml
chown pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost/crl.xml
登録プロファイルに設定されている CRL 配布ポイントは http://rhcs10.example.com:31085/crl/ServerCertCRL.crl のようになります (完全な例は後続のセクションを参照してください)。
ファイルベースの CRL パブリッシャーは、証明書の発行や失効の頻度が低い、より小さな CRL にのみ推奨されます。このセクションで説明する CA スタートアップセットアップのなど、必要な場合にのみ推奨されます。
7.6.6.3. CRL 配布ポイントを使用した CA の登録プロファイル設定
必要なプロファイルを有効にして、CRL 配布ポイントを追加します。これらは、上記のセクションの設定に対応するプロファイルです。
/var/lib/pki/<ca instance directory/ca/profiles/ca/
ディレクトリーにあるcaCMCserverCertWithCRLDP.cfg
プロファイル (RSA キーを使用した登録用) を開き、次のように更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg … enable=true … policyset.serverCertSet.10.default.params.crlDistPointsPointName_0=http://rhcs10.example.com:31085/crl/ServerCertCRL.crl …
/var/lib/pki/<ca instance directory/ca/profiles/ca/
ディレクトリーにあるcaCMCECserverCertWithCRLDP.cfg
(ECC キーを使用した登録用) を開き、次のように更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /var/lib/pki/rhcs10-ECC-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
# vi /var/lib/pki/rhcs10-ECC-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg … enable=true … policyset.serverCertSet.10.default.params.crlDistPointsPointName_0=http://rhcs10.example.com:21085/crl/ServerCertCRL.crl …
user:group の所有権を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
# chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg # chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
CA の
CS.cfg
に新しいプロファイルを登録します。各プロファイルに次の行を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow profile.caCMCserverCertWithCRLDP.class_id=caEnrollImpl profile.caCMCserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg profile.caCMCECserverCertWithCRLDP.class_id=caEnrollImpl profile.caCMCECserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
profile.caCMCserverCertWithCRLDP.class_id=caEnrollImpl profile.caCMCserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg profile.caCMCECserverCertWithCRLDP.class_id=caEnrollImpl profile.caCMCECserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
profile.list
エントリーを編集して、2 つの新しいプロファイルを追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow profile.list=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP,acmeServerCert,caCMCserverCert,caCMCECserverCert, …
profile.list=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP,acmeServerCert,caCMCserverCert,caCMCECserverCert, …
7.6.6.4. より迅速な CRL 更新のための設定
サーバー証明書の筆耕頻度は高くないため、失効した場合はすぐに CRL を更新するべきです。CA の CS.cfg
を編集します。
ca.crl.ServerCertCRL.alwaysUpdate=true
ca.crl.ServerCertCRL.alwaysUpdate=true
7.6.6.5. CA の設定が更新された後、CA を起動します
設定が完了された後、CA を起動します。
pki-server start rhcs10-RSA-SubCA
# pki-server start rhcs10-RSA-SubCA
「一時 DS 証明書を置き換える (SubCA)」 の最後で CA の Directory Server の Server-Cert
が正しく置き換えられると、CRL 配布ポイントの設定を確認するように指示されます。