1.6. TLS 証明書の更新
TLS 証明書には有効期限 (日時) があります。継続してセキュアな接続を提供するには、有効期限が切れる前に Directory Server のサーバー証明書を更新します。
1.6.1. コマンドラインでの TLS 証明書の更新 リンクのコピーリンクがクリップボードにコピーされました!
TLS 証明書には有効期限 (日時) があります。継続してセキュアな接続を提供するには、有効期限が切れる前に Directory Server のサーバー証明書を更新します。
TLS サーバー証明書の有効期限が切れる前に、以下の手順に従います。
前提条件
- 属性の暗号化が設定されていない。
- TLS 証明書の有効期限がまもなく切れる。
手順
プライベートキーおよび証明書署名要求 (CSR) を作成します。外部ユーティリティーを使用して作成する場合は、この手順を省略します。
ホストが 1 つの名前のみで到達可能である場合は、以下を実行します。
dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization"
# dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数の名前でホストにアクセスできる場合は、以下を行います。
dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization" server.example.com server.example.net
# dsctl <instance_name> tls generate-server-cert-csr -s "CN=server.example.com,O=example_organization" server.example.com server.example.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最後のパラメーターとしてホスト名を指定した場合、このコマンドは
DNS:server.example.com, DNS:server.example.net
エントリーで SAN (Subject Alternative Name) 拡張を CSR に追加します。
-s subject
パラメーターで指定した文字列は、RFC 1485 に従って有効なサブジェクト名である必要があります。サブジェクトのCN
フィールドが必要で、サーバーの完全修飾ドメイン名 (FQDN) の 1 つに設定する必要があります。このコマンドは、/etc/dirsrv/slapd-<instance_name>/Server-Cert.csr
ファイルに CSR を保存します。- 認証局 (CA) に CSR を送信し、発行した証明書を取得します。詳細は、CA のドキュメントを参照してください。
-
CA 証明書とサーバー証明書の両方を
/root/
ディレクトリーに保存します。 以下のオプションのいずれかを使用して、CA が発行するサーバー証明書を NSS データベースにインポートします。
dsctl tls generate-server-cert-csr
コマンドを使用して秘密鍵を作成した場合は、以下を入力します。dsconf -D "cn=Directory Manager" ldap://server.example.com security certificate add --file /root/instance_name.crt --name "server-cert" --primary-cert
# dsconf -D "cn=Directory Manager" ldap://server.example.com security certificate add --file /root/instance_name.crt --name "server-cert" --primary-cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --name _certificate_nickname
パラメーターで設定した証明書の名前を書き留めておきます。これは後のステップで必要になります。外部ユーティリティーを使用して秘密鍵を作成した場合は、サーバー証明書および秘密鍵をインポートします。
dsctl <instance_name> tls import-server-key-cert /root/server.crt /root/server.key
# dsctl <instance_name> tls import-server-key-cert /root/server.crt /root/server.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、最初にサーバー証明書へのパスを指定してから、秘密鍵へのパスを指定する必要があります。このメソッドは、証明書のニックネームを常に
Server-Cert
に設定します。
CA 証明書を NSS データベースにインポートします。
dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate add --file /root/ca.crt --name "Example CA"
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate add --file /root/ca.crt --name "Example CA"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA 証明書の信頼フラグを設定します。
dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate set-trust-flags "Example CA" --flags "CT,,"
# dsconf -D "cn=Directory Manager" ldap://server.example.com security ca-certificate set-trust-flags "Example CA" --flags "CT,,"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、Directory Server が、TLS による暗号化および証明書ベースの認証に対して CA を信頼するように設定します。
インスタンスを停止します。
dsctl <instance_name> stop
# dsctl <instance_name> stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/dirsrv/slapd-<instance_name>/dse.ldif
ファイルを編集し、属性を含む次のエントリーを削除します。-
cn=AES,cn=encrypted attribute keys,cn=database_name,cn=ldbm database,cn=plugins,cn=config
-
cn=3DES,cn=encrypted attribute keys,cn=database_name,cn=ldbm database,cn=plugins,cn=config
重要全データベースのエントリーを削除します。
nsSymmetricKey
属性を含むエントリーが、/etc/dirsrv/slapd-<instance_name>/dse.ldif
ファイルに残されると、Directory Server は起動に失敗します。-
インスタンスを起動します。
dsctl <instance_name> start
# dsctl <instance_name> start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow