TLSv1.1およびTLSv1プロトコルを無効にするためのガイドライン
TLSプロトコル構成をTLSv1.2のみに更新
NoSQLデータベースでは、デフォルトのセキュリティ構成でTLSv1およびTLSv1.1プロトコルが無効になっており、有効なプロトコルはTLSv1.2のみです。
アップグレードの意味:
この変更によって、TLSv1.1およびTLSv1.2のサポートは削除されませんが、デフォルトのセキュリティ構成でのみ無効になります。以前のリリースで作成されたセキュリティ構成で24.1.11リリースにアップグレードしても互換性の問題はありませんが、既存のNoSQL DatabaseインストールでTLSv1.1およびTLSv1を無効にすることをお薦めします。
前提条件:
TLSプロトコルをTLSv1.2にのみ更新する前に、既存のセキュリティ構成でTLSv1.2プロトコルがすでに有効になっていることを確認する必要があります。そうしないと、更新中にNoSQL Databaseサーバーが機能しません。
- NoSQL Databaseサーバーのセキュリティ構成のプロトコル設定で、TLSv1.2プロトコルが有効になっているかどうかを確認します。
securityconfig
ユーティリティを実行して、プロトコルにTLSv1.2が含まれているかどうかを確認します。java -jar kv/lib/kvstore.jar securityconfig config show -secdir KVROOT/security
セキュリティ構成のプロトコルにTLSv1.2がない場合は、「TLSv1.2プロトコルの有効化」の項に従ってTLSv1.2を最初に有効にします。
- クライアント・アプリケーションのログイン・プロパティを確認します。次のNoSQLログイン・プロパティにTLSv1.2があるかどうかを確認します。
たとえば:
oracle.kv.ssl.protocols="TLSv1.2,TLSv1.1,TLSv1"
TLSv1.2を追加し、クライアント・アプリケーションがこのセキュリティ・プロパティで指定されていない場合は再起動します。
TLSv1.2プロトコルの有効化
これは、NoSQL Databaseセキュリティ構成でTLSv1.2を有効化する手順です。既存のセキュリティ構成でTLSv1.1およびTLSv1のみが有効になっていることを前提としています。
- 既存のセキュリティ構成ディレクトリの2つのコピーを作成します。1つはバックアップとして保持し、もう1つはプロトコルの更新に使用します。
- コピーしたセキュリティ構成ディレクトリ内のSSLプロトコルを更新します。
java -jar /kv/lib/kvstore.jar securityconfig \ config update -secdir security \ -param "allowProtocols=TLSv1.2,TLSv1.1,TLSv1" \ -param "clientAllowProtocols=TLSv1.2,TLSv1.1,TLSv1"
- 更新されたセキュリティ構成内のプロトコルでTLSv1.2が有効になっているかどうかを確認します。
java -jar kv/lib/kvstore.jar securityconfig config show -secdir KVROOT/security
プロトコルにTLSv1.2があるかどうかを確認します。
- 更新されたセキュリティ・ディレクトリを各サーバー・ノード(ストレージ・ノード)にコピーし、古いセキュリティ構成ディレクトリを置き換えます。次に、すべてのレプリケーション・ノード(RN)がオンラインであることを確認し、次のコマンドを使用して、各ストレージ・ノードを1つずつ再起動します。
java -jar /lib/kvstore.jar stop -root KVROOT java -jar /lib/kvstore.jar start -root KVROOT&
- NoSQL開発環境から続行して、管理CLIを起動します。
ping
コマンドを使用して、すべてのRNが稼働しているかどうかを確認します。
出力:(~/tmp/kvroot/newKey)=> java -jar $KVHOME/lib/kvstore.jar runadmin -host localhost -port 5000 -security $KVROOT1/security/client.security
Logged in admin as anonymous
出力:kv-> ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 00:34:37 UTC Version: 24.1.11 Shard Status: healthy:1 writable-degraded:0 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:3 offline:0 max DelayMillis:1 max CatchupTimeSecs:0 Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,MASTER sequenceNumber:63 haPort:5011 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn2] Status: RUNNING,REPLICA sequenceNumber:63 haPort:6010 delayMillis:1 catchupTimeSecs:0 Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:63 haPort:7010 delayMillis:? catchupTimeSecs:?
- 各SNを順番に再起動します。次のSNに進む前に、最後に再起動したSNが完全に稼働していることを確認してください。
java -jar $KVHOME/lib/kvstore.jar stop -root /Users/my_name/tmp/kvroot/kvroot1 (~/hg/kv/kvstore)=> java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT1 &
出力:kv-> ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 21:23:56 UTC Version: 24.1.11 Shard Status: healthy:1 writable-degraded:0 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:3 offline:0 maxDelayMillis:0 maxCatchupTimeSecs:0 Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,REPLICA sequenceNumber:62 haPort:5011 delayMillis:0 catchupTimeSecs:0 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn2] Status: RUNNING,MASTER sequenceNumber:62 haPort:6010 Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:62 haPort:7010 delayMillis:0 catchupTimeSecs:0 Rep Node [rg1-rn1] Status: RUNNING,REPLICA is up, now restart the next SN (~/hg/kv/kvstore)=> java -jar $KVHOME/lib/kvstore.jar stop -root /Users/my_name/tmp/kvroot/kvroot2
出力:kv->ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 21:25:39 UTC Version: 24.1.11 Shard Status: healthy:0 writable-degraded:1 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:2 offline:1 maxDelayMillis:? maxCatchupTimeSecs:? Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,REPLICA sequenceNumber:62 haPort:5011 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] UNREACHABLE Rep Node [rg1-rn2] Status: UNREACHABLE Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:62 haPort:7010 delayMillis:? catchupTimeSecs:?
(~/hg/kv/kvstore)=> java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT2 &
出力:kv->ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 21:26:09 UTC Version: 24.1.11 Shard Status: healthy:1 writable-degraded:0 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:3 offline:0 maxDelayMillis:1 maxCatchupTimeSecs:0 Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,REPLICA sequenceNumber:63 haPort:5011 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn2] Status: RUNNING,REPLICA sequenceNumber:63 haPort:6010 delayMillis:1 catchupTimeSecs:0 Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:63 haPort:7010 delayMillis:1 catchupTimeSecs:0
TLSプロトコルをTLSv1.2のみに更新
これは、プロトコルTLSv1.2のみを有効にするように既存のセキュリティ構成を更新する手順です。セキュリティ構成でTLSv1.2がすでに有効になっていることを前提としています。
- クライアント・アプリケーションのログイン・プロパティを更新します。oracle.kv.ssl.protocolsを更新して、TLSv1.2のみ(存在する場合)にします。
- 既存のセキュリティ構成ディレクトリの2つのコピーを作成します。1つはバックアップとして保持し、もう1つはプロトコルの更新に使用します。
- コピーしたセキュリティ構成ディレクトリ内のSSLプロトコルを更新します。
java -jar /kv/lib/kvstore.jar securityconfig \ config update -secdir security \ -param "allowProtocols=TLSv1.2" -param "clientAllowProtocols=TLSv1.2"
- 更新されたセキュリティ構成内のプロトコルにTLSv1.2のみが含まれているかどうかを確認します。
java -jar kv/lib/kvstore.jar securityconfig config show -secdir KVROOT/security
プロトコルにTLSv1.2のみが含まれているかどうかを確認します。
- 更新されたセキュリティ・ディレクトリを各サーバー・ノード(ストレージ・ノード)にコピーし、古いセキュリティ構成ディレクトリを置き換えます。次に、すべてのレプリケーション・ノードがオンラインであることを確認し、次のコマンドを使用して、各ストレージ・ノードを1つずつ再起動します。
java -jar /lib/kvstore.jar stop -root KVROOT java -jar /lib/kvstore.jar start -root KVROOT&
- NoSQL開発環境から続行して、管理CLIを起動します。
ping
コマンドを使用して、すべてのRNが稼働しているかどうかを確認します。
出力:(~/tmp/kvroot/newKey)=> java -jar $KVHOME/lib/kvstore.jar runadmin -host localhost -port 5000 -security $KVROOT1/security/client.security
Logged in admin as anonymous
kv-> ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 00:34:37 UTC Version: 24.1.11 Shard Status: healthy:1 writable-degraded:0 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:3 offline:0 max DelayMillis:1 max CatchupTimeSecs:0 Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,MASTER sequenceNumber:63 haPort:5011 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn2] Status: RUNNING,REPLICA sequenceNumber:63 haPort:6010 delayMillis:1 catchupTimeSecs:0 Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:63 haPort:7010 delayMillis:? catchupTimeSecs:?
- 各SNを順番に再起動します。次のSNに進む前に、最後に再起動したSNが完全に稼働していることを確認してください。
java -jar $KVHOME/lib/kvstore.jar stop -root /Users/my_name/tmp/kvroot/kvroot1 (~/hg/kv/kvstore)=> java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT1 &
出力:kv-> ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 21:23:56 UTC Version: 24.1.11 Shard Status: healthy:1 writable-degraded:0 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:3 offline:0 maxDelayMillis:0 maxCatchupTimeSecs:0 Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,REPLICA sequenceNumber:62 haPort:5011 delayMillis:0 catchupTimeSecs:0 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn2] Status: RUNNING,MASTER sequenceNumber:62 haPort:6010 Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:62 haPort:7010 delayMillis:0 catchupTimeSecs:0 Rep Node [rg1-rn1] Status: RUNNING,REPLICA is up, now restart the next SN
(~/hg/kv/kvstore)=> java -jar $KVHOME/lib/kvstore.jar stop -root /Users/my_name/tmp/kvroot/kvroot2
出力:kv->ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 21:25:39 UTC Version: 24.1.11 Shard Status: healthy:0 writable-degraded:1 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:2 offline:1 maxDelayMillis:? maxCatchupTimeSecs:? Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,REPLICA sequenceNumber:62 haPort:5011 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] UNREACHABLE Rep Node [rg1-rn2] Status: UNREACHABLE Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:62 haPort:7010 delayMillis:? catchupTimeSecs:?
(~/hg/kv/kvstore)=> java -jar $KVHOME/lib/kvstore.jar start -root $KVROOT2 &
出力:kv->ping
Pinging components of store HSRStore based upon topology sequence #18 10 partitions and 3 storage nodes Time: 2024-04-05 21:26:09 UTC Version: 24.1.11 Shard Status: healthy:1 writable-degraded:0 read-only:0 offline:0 Admin Status: healthy Zone [name=Austin id=zn1 type=PRIMARY allowArbiters=false] RN Status: online:3 offline:0 maxDelayMillis:1 maxCatchupTimeSecs:0 Storage Node [sn1] on localhost:5000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Admin [admin1] Status: RUNNING,MASTER Rep Node [rg1-rn1] Status: RUNNING,REPLICA sequenceNumber:63 haPort:5011 Storage Node [sn2] on localhost:6000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn2] Status: RUNNING,REPLICA sequenceNumber:63 haPort:6010 delayMillis:1 catchupTimeSecs:0 Storage Node [sn3] on localhost:7000 Zone: [name=Austin id=zn1 type=PRIMARY allowArbiters=false] Status: RUNNING Ver: 24.1.11 2024-04-05 08:51:55 UTC Build id: 0d00330822fc Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:63 haPort:7010 delayMillis:1 catchupTimeSecs:0