28.2. 証明書と認証局の管理
ほぼすべての IdM トポロジーには、IdM ドメイン内のサーバー/レプリケーション、ホスト、ユーザー、およびサービスの証明書を管理する統合 Dogtag Certificate System が含まれます。
Dogtag Certificate System の設定自体に変更が加えられると、ドメインおよび物理マシンが変更される際に変更が必要になる場合があります。
注記
IdM 環境での複数の認証局(CA)署名証明書の使用は、Red Hat Enterprise Linux 6 ではサポートされません。この設定に対応するには、IdM システムを Red Hat Enterprise Linux 7 にアップグレードします。
28.2.1. 外部 CA が発行する CA 証明書の更新
ホスト証明書およびユーザー証明書 (内部 IdM サービスで使用されるサブシステムおよびサーバー証明書を含む) などの IdM サーバーが発行するすべての証明書は、
certmonger
ユーティリティーにより追跡され、有効期限が近いときに自動的に更新されます。
CA 証明書自体の例外が 1 つあります。この証明書は有効期限が切れても自動的に更新されません。
警告
CA 証明書の有効期限が切れる前に、常に CA 証明書を更新するようにしてください。CA 証明書の有効期限は独自に監視する必要があることに注意してください。IdM は、Red Hat Enterprise Linux 6 で自動的に有効期限を監視しません。
CA 証明書は、発行元 CA を使用して更新してから、証明書データベース (NSS データベースとも呼ばれます) で手動で更新する必要があります。これは、
certutil
NSS セキュリティーユーティリティーを使用して行います。[8]
注記
IdM Web UI または IdM コマンドラインユーティリティーを使用して CA 証明書を更新することはできません。
証明書の更新には、いくつかの要件があります。
- 証明書を発行した外部 CA は更新を許可する必要があります。
- CA の秘密鍵は変更しないでください。
- 新しい証明書には、元の証明書と同じサブジェクト名を指定する必要があります。
新しい証明書を取得するには、元の CSR (証明書署名要求) が必要です。これは、以下の 3 つの場所のいずれかで確認できます。
- 外部 CA のコピーが依然としてある可能性があります。
- 最初にインストールした IdM サーバーの
/root/ipa.csr
ファイルで、 - 最初にインストールした IdM サーバーの
/etc/pki-ca/CS.cfg
ファイルのca.signing.certreq セクション
。これは PEM 形式に変換する必要があります。
また、NSS データベースで CA のニックネームを知っている必要があります。通常、これは
<REALM> IPA CA
です。ここでは EXAMPLE.COM IPA CA
を使用します。Apache データベースに対してクエリーを実行して、現在のニックネームを見つけるには、以下のコマンドを実行します。
# certutil -L -d /etc/httpd/alias
28.2.1.1. 更新手順
他の証明書がまだ有効である期間に更新を行う必要があります。独自のサブシステム証明書を更新するには、CA が稼働している必要があります。CA 証明書の有効期限が切れてから CA 証明書を更新しようとすると、有効期間が CA サブシステム証明書の有効期限を過ぎても IdM サーバーは機能しません。
証明書の更新
外部 CA に CSR を付与し、新しい証明書を発行します。作成された証明書が
/root/ipa.crt
ファイルに保存されることを前提とします。また、/root/external-ca.pem
ファイルに PEM 形式の外部 CA 証明書チェーンが含まれていることを前提としています。更新の管理には、指定した IdM CA で更新を行う必要があります。最初にインストールされた IdM サーバーを特定する方法として、subsystem.select
の値が New
であるかどうかを確認することができます。
# grep subsystem.select /etc/pki-ca/CS.cfg
subsystem.select=New
別の方法として、getcert list のコマンドの出力で renew_ca_cert 保存後コマンドを検索する方法があります。
Number of certificates and requests being tracked: 8.
Request ID '20131125153455':
status: MONITORING
stuck: no
key pair storage: type=NSSDB,location='/var/lib/pki-ca/alias',nickname='auditSigningCert cert-pki-ca',token='NSS Certificate DB',pin='455536908955'
certificate: type=NSSDB,location='/var/lib/pki-ca/alias',nickname='auditSigningCert cert-pki-ca',token='NSS Certificate DB'
CA: dogtag-ipa-renew-agent
issuer: CN=Certificate Authority,O=EXAMPLE.COM
subject: CN=CA Audit,O=EXAMPLE.COM
expires: 2015-11-15 15:34:12 UTC
pre-save command: /usr/lib64/ipa/certmonger/stop_pkicad
post-save command: /usr/lib64/ipa/certmonger/renew_ca_cert "auditSigningCert cert-pki-ca"
track: yes
auto-renew: yes
...
最初にインストールした IdM サーバーに新しい CA 証明書をインストールする
- 証明書を更新するには、CA をシャットダウンする必要があります。
# service ipa stop
- CA 証明書の NSS データベースを更新します。
# certutil -A -d /var/lib/pki-ca/alias -n 'caSigningCert cert-pki-ca' -t CT,C,C -a -i /root/ipa.crt
/etc/pki-ca/CS.cfg
のca.signing.cert
の値を置き換えます。これは、証明書の base64 値です。これを取得するには、BEGIN/END ブロックをipa.crt
から削除し、1 つの行に圧縮します。- Apache NSS データベースを更新します。
# certutil -A -d /etc/httpd/alias -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt
- LDAP サーバーインスタンスを更新します。
# certutil -A -d /etc/dirsrv/slapd-EXAMPLE-COM -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt # certutil -A -d /etc/dirsrv/slapd-PKI-IPA -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt
- ファイルシステムの CA 証明書を更新します。
# cp /root/ipa.crt /etc/ipa/ca.crt # cat /root/ipa.crt /root/external-ca.pem >/etc/httpd/alias/cacert.asc # cp /etc/httpd/alias/cacert.asc /usr/share/ipa/html/ca.crt
- 共有システムデータベースを更新します。
# certutil -A -d /etc/pki/nssdb -n 'IPA CA' -t CT,C,C -a -i /root/ipa.crt
- サービスを再起動します。
# service ipa start
- LDAP で CA 証明書を更新します。まず、証明書を DER 形式に変換します。
# openssl x509 -outform DER -in /root/ipa.crt -out /tmp/ipa.der
- 証明書を LDAP に追加します。
# kinit admin # ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@EXAMPLE.COM SASL SSF: 56 SASL data security layer installed. dn: cn=CAcert,cn=ipa,cn=etc,dc=example,dc=com changetype: modify replace: cacertificate;binary cacertificate;binary:<file:///tmp/ipa.der
CA を使用する他の IdM サーバーに新しい CA 証明書をインストールする
- 更新された証明書をマシンにコピーし、サービスを停止します。ファイルは
/root/ipa.crt
と想定します。# service ipa stop
- Apache NSS データベースを更新します。
# certutil -A -d /var/lib/pki-ca/alias -n 'caSigningCert cert-pki-ca' -t CT,C,C -a -i /root/ipa.crt
/etc/pki-ca/CS.cfg
のca.signing.cert
の値を置き換えます。これは、証明書の base64 値です。これを取得するには、BEGIN/END ブロックをipa.crt
から削除し、1 つの行に圧縮します。- Apache NSS データベースを更新します。
# certutil -A -d /etc/httpd/alias -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt
- LDAP サーバーインスタンスを更新します。
# certutil -A -d /etc/dirsrv/slapd-EXAMPLE-COM -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt # certutil -A -d /etc/dirsrv/slapd-PKI-IPA -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt
- ファイルシステムの CA 証明書を更新します。
# cp /root/ipa.crt /etc/ipa/ca.crt # cat /root/ipa.crt /root/external-ca.pem >/etc/httpd/alias/cacert.asc # cp /etc/httpd/alias/cacert.asc /usr/share/ipa/html/ca.crt
- 共有システムデータベースを更新します。
# certutil -A -d /etc/pki/nssdb -n 'IPA CA' -t CT,C,C -a -i /root/ipa.crt
- サービスを再起動します。
# service ipa start
CA を使用しない他の IdM マスターに新しい CA 証明書をインストールする
- 更新された証明書をマシンにコピーし、サービスを停止します。ファイルは
/root/ipa.crt
と想定します。# service ipa stop
- Apache NSS データベースを更新します。
# certutil -A -d /etc/httpd/alias -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt
- LDAP サーバーインスタンスを更新します。
# certutil -A -d /etc/dirsrv/slapd-EXAMPLE-COM -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt # certutil -A -d /etc/dirsrv/slapd-PKI-IPA -n 'EXAMPLE.COM IPA CA' -t CT,C,C -a -i /root/ipa.crt
- ファイルシステムの CA 証明書を更新します。
# cp /root/ipa.crt /etc/ipa/ca.crt # cat /root/ipa.crt /root/external-ca.pem >/etc/httpd/alias/cacert.asc # cp /etc/httpd/alias/cacert.asc /usr/share/ipa/html/ca.crt
- 共有システムデータベースを更新します。
# certutil -A -d /etc/pki/nssdb -n 'IPA CA' -t CT,C,C -a -i /root/ipa.crt
- サービスを再起動します。
# service ipa start
すべての IdM クライアントマシンに新しい CA 証明書をインストールする
更新された IdM CA 証明書を取得します。ファイルは
/tmp/ipa.crt
と想定します。
# certutil -A -d /etc/pki/nssdb -n 'IPA CA' -t CT,C,C -a -i /tmp/ipa.crt # cp /tmp/ipa.crt /etc/ipa/ca.crt