SSLキーおよび証明書の更新ガイドライン
サーバーが使用する証明書が期限切れになるか、有効でなくなった場合は、SSLキーおよび証明書を置き換えることが必要になることがあります。この項では、このタスクを完了するための手順について説明します。
以降の指示では、自己署名証明書および関連付けられるキー(Oracle NoSQL Databaseのデフォルト)について説明します。または、既存のデフォルト・セキュア・インストール用の外部証明書の構成ガイドラインで説明されているように、外部証明書を使用することもできます。
- ストレージ・ノードに新しいキー/証明書のペアを作成します。
- 新しいキー/証明書のペアをすべてのストレージ・ノードにコピーし、新しい証明書を既存のトラスト・ストア・ファイル(
client.trust
とstore.trust
)にマージします。 - 各ストレージ・ノードを順番に再起動します。
- マージされたエントリとともに
client.trust
を各クライアントにコピーします。 - マージされたエントリを含む
store.keys
を各ストレージ・ノードにコピーし、各ストレージ・ノードを順番に再起動します(2回目)。 - すべてのストレージ・ノードの
store.trust
内の古い証明書を削除します。 - 新しい証明書のみが使用されていることを確認します。
実行中のストアのSSLキーおよび証明書を更新するには、次のステップを実行します。Oracle NoSQL Databaseは、プロセス全体を通して操作可能なままにできます。
ノート:
次で使用されているOracle NoSQL Database環境は、容量が3、レプリケーション係数(RF)が3で3つのストレージ・ノードにデプロイされています。セキュリティ構成ファイルの詳細は、セキュリティ構成を参照してください。
新しいSSLキー証明書の作成
- 1つ目のストレージ・ノード(SN1)で、キーを格納する一時ディレクトリを作成します。
cd /users/user_name/tmp/kvroot/ mkdir newKey
SN1で、securityconfig
ユーティリティを実行して、新しいディレクトリnewKey
に新しいキー/証明書ペアを作成します。新しい構成では、現在の構成と同じキーストア・パスワードを指定する必要があります。-kspwd
オプションでパスワードを指定しない場合、ユーティリティによってパスワードの設定を求められます。java -jar $KVHOME/lib/kvstore.jar securityconfig \ config create -root /users/user_name/tmp/kvroot/newKey -kspwd 123456
出力:cd /users/user_name/tmp/kvroot/newKey ls -R security
./security:client.security security.xml store.trust temp.cert client.trust store.keys store.wallet ./security/store.wallet: cwallet.sso
- SN1で、次のようにconfig merge-trustコマンドを使用してトラストストア・エントリをマージします。このコマンドの実行後は、
client.trust
ファイルとstore.trust
ファイルに、2つのSSL証明書エントリが含まれるようになります。java -jar $KVHOME/lib/kvstore.jar securityconfig \ config merge-trust -root $KVROOT -source-root \ /users/user_name/tmp/kvroot/newKey
keytool -list
を使用してキーストア内のエントリをリストします。
出力:cd $KVROOT/security keytool -list -keystore store.trust Enter keystore password: *********
Keystore type: JKS Keystore provider: SUN Your keystore contains 2 entries mykey_2, Feb 6, 2024,trustedCertEntry, Certificate fingerprint (SHA1): A3:75:F2:97:25:20:F9:AD:52:61:71:8F:6B:7E:B1:BB:E8:54:D1:7A mykey, Feb 6, 2024,trustedCertEntry, Certificate fingerprint SHA1): 89:71:8C:F1:6D:7E:25:D7:AD:C4:7E:23:8C:09:0D:AC:CE:AE:3F:67
ノート:
client.trust
ファイルにも、前述のstore.trust
ファイルと同じ2つのエントリが含まれています。複数ストレージ・ノード・デプロイメントでは、新しい構成(セキュリティ・ディレクトリとそのコンテンツ)を各ストレージ・ノード・ホストの新しい構成ディレクトリにコピーし、各ホストに対して、説明したとおりに
merge-trust
を実行する必要があります。SN2とSN3で、次のことを実行します:cd /users/user_name/tmp/kvroot/ mkdir newKey
ディレクトリ
newKey
の内容をSN1からSN2とSN3の/users/user_name/tmp/kvroot/newKey
ディレクトリにコピーします。SN2とSN3で、次に示すようにオプションで、config merge-trust
コマンドを使用してトラストストア・エントリをマージします。java -jar $KVHOME/lib/kvstore.jar securityconfig \ config merge-trust -root $KVROOT \ -source-root /users/user_name/tmp/kvroot/newKey
keytool
コマンドを使用してSN2とSN3にあるキーストア内のエントリをリストできます(前述のSN1の場合と同様)。 - 自己署名証明書を使用して実行されているOracle NoSQL Databaseでは、クライアント側アプリケーションを、マージされたクライアント・トラストストアの使用に切り替えた後に、古い資格証明または新しい資格証明を使用してデータ・ストアに接続できます。更新手順のこの時点でクライアントに変更を加えることをお薦めします。これによって、クライアントが、更新プロセス全体にわたりそのデータ・ストアに接続できるようになります。マージされたエントリ(2つの証明書エントリ)を含む
client.trust
ファイルを各クライアントにコピーし、クライアント・アプリケーションで使用されている既存のclient.trust
ファイルを置き換える必要があります。更新が完了した後、クライアントで、古い証明書がクリアされるように、新しいトラストストアの使用に切り替える必要があります。scp <SN1_host>:$KVROOT/security/client.trust \ <client_host>:<directory_client.trust>/client.trust
ノート:
client.trust
は、クライアントとサーバー間の通信を認証する場合に使用し、store.trust
は、サーバー間の通信を認証する場合に使用します。 - 各ストレージ・ノードを順番に停止し起動します。その際は、各SNが完全に起動されたことを確認してから次のSNを再起動してください。データ・ストアではSSL証明書を更新している間のストレージ・ノードの再起動中に定足数を維持する必要があるため、一度に1つのSNを再起動する必要があります。
再起動後に、そのストレージ・ノードで、マージされた
store.trust
から新しい証明書と古い証明書が両方ロードされます。そのため、そのストレージ・ノードでは、新しいSSL資格証明と古いSSL資格証明を両方認識できます。まだ再起動されていないストレージ・ノードでは、引き続き、store.trust
ファイルからの古いSSL資格証明が使用されます。各ストレージ・ノード(SN1、SN2およびSN3)で、次のステップを実行します:java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT&
管理CLIを起動し、ping
コマンドを使用して、すべてのレプリケーション・ノード(RN)が稼働中であることを確認します。java -jar $KVHOME/lib/kvstore.jar runadmin -host $HOSTNAME -port 5000 \ -security $KVROOT/security/client.security
匿名で管理にログインしましたkv-> ping
-
store.keys
ファイルには、生成された秘密キーが含まれています。上で使用したmerge-trust
ユーティリティでは、store.trust
内の証明書のみがマージされ、秘密キーはマージされません。NoSQL Databaseで新しいSSL秘密キーが使用されるようにするには、次に示すように、新しいstore.keys
をすべてのストレージ・ノード内の$KVROOTの下のsecurityディレクトリにコピーする必要があります。各ストレージ・ノード(SN1、SN2およびSN3)で、次のステップを実行します:
store.keys
ファイルをsecurityディレクトリにコピーし、ストレージ・ノードを停止してから再起動します。各ストレージ・ノードを、ローリング再起動として順番に停止し起動します。その際は、各SNが完全に起動されたことを確認してから次のSNを再起動してください。一度に1つのSNを再起動する必要があります。これは、データ・ストアでその再起動中に定足数を維持する必要があるためです。cp /users/user_name/tmp/kvroot/newKey/security/store.keys $KVROOT/security/. java -jar $KVHOME/lib/kvstore.jar stop -root $KVROOT java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT&
- 各ストレージ・ノードで、廃止された証明書
mykey
をstore.trust
から削除します。その後、新しい証明書の名前mykey_2
をmykey
に変更します。各ストレージ・ノード(SN1、SN2およびSN3)で、次のステップを実行します:
mykey
という名前の古い証明書を削除します。keytool -delete -keystore $KVROOT/security/store.trust -alias mykey Enter keystore password:
新しく作成した証明書の名前mykey_2
を、前のキーの名前であるmykey
に変更します。keytool -changealias -keystore $KVROOT/security/store.trust \ -alias mykey_2 -destalias mykey
これで、mykey
という、新しく生成されたキー1つのみが存在するようになります。次のコマンドを使用して、その新しい証明書1つのみが示されることを確認します:keytool -list -keystore $KVROOT/security/store.trust Enter keystore password:
Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry mykey, Feb 6, 2024,trustedCertEntry, Certificate fingerprint (SHA1): A3:75:F2:97:25:20:F9:AD:52:61:71:8F:6B:7E:B1:BB:E8:54:D1:7A
これで、データ・ストア上のSSLキーおよび証明書が更新されました。