第21章 Certificate System 9 から Certificate System 10 へのアップグレード
ユーザーは、Errata-Support チャネルを通じてセキュリティーとバグ修正を入手するために、Red Hat Certificate System の最新バージョンにアップグレードすることを推奨します。現在、最新バージョンは RHEL 7.9 の RHCS 9.7 と RHEL 8.6 の RHCS 10.4 です。
21.1. CA の移行
既存の証明書ファイルを使用した Certificate System の移行には、以下の手順が必要です。
21.1.1. 以前のシステムからのデータのエクスポート
新しい Certificate System インスタンスをセットアップする前に、以下の手順を使用して、現在の認証局 (CA) のデータをエクスポートします。この例では、CA のインスタンス名は <pki-rootCA> で、
/var/lib/pki/<instance_name>
にあります。
- CA 署名証明書とキーをエクスポートします。
#
grep internal= /var/lib/pki/<instance_name>/conf/password.conf | awk -F= '{print $2;}' > internal.txt
#
echo <Secret.123> > password.txt
#
PKCS12Export -d /var/lib/pki/<instance_name>/alias -p internal.txt -o ca.p12 -w password.txt
- 証明書署名要求 (CSR) をエクスポートします。
#
echo "-----BEGIN NEW CERTIFICATE REQUEST-----" > ca_signing.csr
#
sed -n "/^ca.signing.certreq=/ s/^[^=]*=// p" < /var/lib/pki/<instance_name>/ca/conf/CS.cfg >> ca_signing.csr
#
echo "-----END NEW CERTIFICATE REQUEST-----" >> ca_signing.csr
- 古い CA が (チェーン内に単一のルート CA を持つ) 中間 CA である場合は、NSS データベースからルート CA を抽出します。
#
certutil -L -d /var/lib/pki/<instance_name>/alias/ -n root_CA_nickname -a > ca_rootca_signing.crt
- 内部 LDAP データベースをバックアップします。
- CA の
CS.cfg
でinternaldb.database
の値を確認して、CA データベースの名前を見つけます。#
grep internaldb.database /etc/pki/<instance_name>/ca/CS.cfg
internaldb.database=<CS_database_name> - インスタンスが作成されたら、
setup-ds.pl
によって生成されたインスタンス固有のスクリプトを使用して、このデータベースを.ldif
ファイルにエクスポートします。#
cd /usr/lib64/dirsrv/<instance_name>
#
./db2ldif -n "<CS_database_name>" -a /tmp/old_ca.ldif
db2ldif コマンドは DB ユーザーとして実行されるため、書き込みパーミッションを持つ宛先フォルダーが必要になります。
old_ca.ldif
、ca.p12
、ca_signing.csr
ファイルを新しい CA マシンに転送します。移行する CA が中間 CA でもある場合は、ca_rootca_signing.crt
も転送します。
21.1.2. PKCS12 ファイルの確認
新しい CA では、新しいデータベースインスタンスが標準ポート (389) で実行されます。
PKCS12
ファイルには、古いシステムのすべてのシステム証明書が含まれています。ファイルに CA 署名証明書およびキーが含まれていることを確認します。
注記
FIPS モードでは、NSS データベースを使用して pki pkcs12 コマンドを実行する必要があります。詳細は、
pki-pkcs12
CLI を参照してください。
- CA 署名証明書およびキーを見つけます。
$
echo "<Secret.123>" > password.txt
$
pki pkcs12-cert-find --pkcs12-file ca.p12 --pkcs12-password-file password.txt
$
pki pkcs12-key-find --pkcs12-file ca.p12 --pkcs12-password-file password.txt
- CA 署名証明書の信頼フラグが存在することを確認します。フラグが "CTu,Cu,Cu" ではない、またはそれらがない場合は追加します。
$
pki pkcs12-cert-mod "<caSigningCert cert-pki-rootCA>" \ --pkcs12-file ca.p12 --pkcs12-password-file password.txt \ --trust-flags "CTu,Cu,Cu"
- 他の証明書およびキーを削除します。
$
pki pkcs12-cert-del "<Server-Cert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
$
pki pkcs12-cert-del "<subsystemCert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
$
pki pkcs12-cert-del "<ocspSigningCert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
$
pki pkcs12-cert-del "<auditSigningCert cert-pki-rootCA>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
- 移行する CA も中間 CA の場合は、ルート CA 証明書を
PKCS#12
ファイルから削除します。$
pki pkcs12-cert-del "<Top-level Root CA Signing Certificate>" --pkcs12-file ca.p12 --pkcs12-password-file password.txt
21.1.3. 新規ホストでの CA の設定
既存のインスタンスからデータをエクスポートしたら、新しいホストに認証局 (CA) を作成してセットアップします。
- 古い CA のパラメーターを使用して、pkispawn の設定ファイル (CA.cfg など) を作成します。このインスタンスは標準ポート (389) で実行されます。
[DEFAULT] pki_instance_name=<new_instance_name> pki_admin_password=<caadmin_password> pki_client_pkcs12_password=<pkcs12_file_password> pki_ds_password=<DS_password> pki_ds_ldap_port=389 pki_existing=True [CA] pki_ca_signing_csr_path=<path/to/ca_signing.csr> pki_ca_signing_cert_path=<path/to/ca_signing.crt> pki_ca_signing_nickname=<caSigningCert cert-nickname> pki_ds_base_dn=<o=pki-tomcat-CA> pki_ds_database=<instance_name-CA> pki_serial_number_range_start=<starting_number_for_cert_serial_numbers> pki_request_number_range_start=<starting_number_for_request_IDs> pki_master_crl_enable=False
古い CA が中間 CA の場合は、以下の 2 行を設定ファイルに追加します。これらは、ルート CA 証明書へのパスと、NSS データベースに証明書を保存するときに使用するニックネームに対応します。pki_cert_chain_path=<rootca_signing.crt> pki_cert_chain_nickname=<caSigningCert cert-pki-ca>
詳細およびパラメーターの説明は、pkispawn(8) の man ページを参照してください。 - 新規ホストで pkispawn を実行して、新規 CA インスタンスを作成します。
#
pkispawn -s CA -f ca.cfg -v
注記
新規 CA 用に新しい DS インスタンスをセットアップする方法は、Red Hat Directory Server のインストール を参照してください。
21.1.4. 古いデータの新規 CA へのインポート
新しい CA インスタンスを作成した後、データを新しい CA データベースにインポートします。
- CA サービスを停止します。
#
systemctl stop pki-tomcatd@<instance_name>.service
- オプション: 新しいホストで CA データベースをバックアップします。
#
dsctl -v idm-qe-01 db2bak
バックアップは、/var/lib/dirsrv/<instance_name>/bak/<host_name-time_stamp>/
ディレクトリーに保存されます。 - 新しい RHEL 8 内部データベースから、署名証明書の証明書エントリーを削除します。
#
ldapdelete -x -w <password< -D 'cn=Directory Manager' "cn=<serial_number<,ou=certificateRepository,ou=ca,o=pki-tomcat-CA"
エントリーが古いデータからインポートされ、そのエントリーの CRL 属性が正しいエントリーをポイントするようになりました。 - データを新しいデータベースにインポートします。
#
ldapmodify -x -W <password> -D 'cn=Directory Manager' -a -c -f <path/to/old_ca.ldif>
ldapmodify ユーティリティーは新しいエントリーのみを追加し、CA のインストール時に作成された既存のエントリーを更新しません。 - オプション:
import.log
ファイルの出力を確認します。ldap_add: Invalid syntax (21)
など、失敗したアクションを検索できます。 - 古いセキュリティードメインのディレクトリーエントリーを削除します。
#
ldapmodify -W <password> -x -D "cn=Directory Manager"
dn: cn=<server.example.com:9445>,cn=CAList,ou=Security Domain,<o=pki-tomcat-CA> changetype: delete /etc/pki/<instance_name>/ca/CS.cfg
ファイルのca.crl.MasterCRL.enable
パラメーターを有効にして、CA が証明書失効リスト (CRL) マスターとして機能するようにします。ca.crl.MasterCRL.enable=true
- CA サービスを起動します。
#
systemctl start pki-tomcatd@<instance_name>
21.1.5. デフォルトグループにユーザーの再割り当て
ldapmodify または pki ユーティリティーを使用して、デフォルトのグループにメンバーを手動で追加します。
- クライアントを設定します。
#
pki -c <password> client-init
Client initialized#
pk12util -i ~/.dogtag/<instance_name>/ca_admin_cert.p12 -d ~/.dogtag/nssdb/
Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: pk12util: PKCS12 IMPORT SUCCESSFUL ... ユーザー
アカウントをAdministrators
およびSecurity Domain Administrators
グループに追加します。# pki -n "<PKI Administrator for example.com>" -c <password> \ user-membership-add <user_name> "Certificate Manager Agents"
RHCS 9 と RHCS 10 のデフォルト (ブートストラップ) 管理者ユーザーは、同じデフォルトのロール、つまり同じグループメンバーシップを持っています。ただし、デフォルト以外の管理者ユーザーがいる場合や、RHCS 9 で管理者ロールをカスタマイズしている場合は、これらの変更が適切に移行されない可能性があります。この場合は、RHCS 10 でロールを再設定します。# pki -n "<PKI Administrator for example.com>" -c <password> \ user-membership-add <user> "Administrators" # pki -n "<PKI Administrator for example.com>" -c <password> \ user-membership-add <user> "Security Domain Administrators"
証明書が正常に移行されたことを確認する場合は、ca-cert-find コマンドを実行して、新しいホストに存在することを確認します。