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サーバーが機能しません。
  1. 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を最初に有効にします。

  2. クライアント・アプリケーションのログイン・プロパティを確認します。次のNoSQLログイン・プロパティにTLSv1.2があるかどうかを確認します。
    たとえば:
    oracle.kv.ssl.protocols="TLSv1.2,TLSv1.1,TLSv1"

    TLSv1.2を追加し、クライアント・アプリケーションがこのセキュリティ・プロパティで指定されていない場合は再起動します。

TLSv1.2プロトコルの有効化

これは、NoSQL Databaseセキュリティ構成でTLSv1.2を有効化する手順です。既存のセキュリティ構成でTLSv1.1およびTLSv1のみが有効になっていることを前提としています。
  1. 既存のセキュリティ構成ディレクトリの2つのコピーを作成します。1つはバックアップとして保持し、もう1つはプロトコルの更新に使用します。
  2. コピーしたセキュリティ構成ディレクトリ内の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"
  3. 更新されたセキュリティ構成内のプロトコルでTLSv1.2が有効になっているかどうかを確認します。
    java -jar kv/lib/kvstore.jar securityconfig config show -secdir
          KVROOT/security

    プロトコルにTLSv1.2があるかどうかを確認します。

  4. 更新されたセキュリティ・ディレクトリを各サーバー・ノード(ストレージ・ノード)にコピーし、古いセキュリティ構成ディレクトリを置き換えます。次に、すべてのレプリケーション・ノード(RN)がオンラインであることを確認し、次のコマンドを使用して、各ストレージ・ノードを1つずつ再起動します。
    java -jar /lib/kvstore.jar stop -root KVROOT java -jar
          /lib/kvstore.jar start -root KVROOT&
  5. 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:?
  6. 各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がすでに有効になっていることを前提としています。
  1. クライアント・アプリケーションのログイン・プロパティを更新します。oracle.kv.ssl.protocolsを更新して、TLSv1.2のみ(存在する場合)にします。
  2. 既存のセキュリティ構成ディレクトリの2つのコピーを作成します。1つはバックアップとして保持し、もう1つはプロトコルの更新に使用します。
  3. コピーしたセキュリティ構成ディレクトリ内のSSLプロトコルを更新します。
    java -jar /kv/lib/kvstore.jar securityconfig \
    config update -secdir security \
    -param "allowProtocols=TLSv1.2" -param "clientAllowProtocols=TLSv1.2"
  4. 更新されたセキュリティ構成内のプロトコルにTLSv1.2のみが含まれているかどうかを確認します。
    java -jar kv/lib/kvstore.jar securityconfig config show -secdir
          KVROOT/security

    プロトコルにTLSv1.2のみが含まれているかどうかを確認します。

  5. 更新されたセキュリティ・ディレクトリを各サーバー・ノード(ストレージ・ノード)にコピーし、古いセキュリティ構成ディレクトリを置き換えます。次に、すべてのレプリケーション・ノードがオンラインであることを確認し、次のコマンドを使用して、各ストレージ・ノードを1つずつ再起動します。
    java -jar /lib/kvstore.jar stop -root KVROOT java -jar
          /lib/kvstore.jar start -root KVROOT&
  6. 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:?
  7. 各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