TLSV1.3プロトコルを有効にするためのガイドライン

TLSv1.3を有効にするためのTLSプロトコル構成の更新

Oracle NoSQL Databaseが、TLSv1.3プロトコルをサポートするようになりました。NoSQL DatabaseおよびアプリケーションをTLSv1.3で実行するには、JDK11以降、JDK8 Update 261 (JDK 8u261)以降を使用する必要があります。21.3リリース以降、NoSQL Databaseは、makebootconfigまたはsecurityconfigユーティリティを介して作成されたセキュリティ構成のデフォルトのTLSプロトコルにTLSv1.3プロトコルを追加します。既存のセキュリティ構成のTLSプロトコルは、最新のプロトコルTLSv1.3が最もセキュアであるため、これに更新することをお薦めします。

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

これは、既存のセキュリティ構成を更新してプロトコルTLSv1.3を有効にする手順です。既存のセキュリティ構成は、TLSv1.2が有効になっているNoSQL Databaseの以前のリリースによって作成されていることを前提にしています。
  1. クライアント・アプリケーションのログイン・プロパティを更新します。oracle.kv.ssl.protocolsが存在する場合は、これにTLSv1.3を追加します。次に、クライアント・アプリケーションを再起動して、プロトコルの変更を有効にします。
    oracle.kv.ssl.protocols="TLSv1.3,TLSv1.2"
  2. ストレージ・ノードの既存のセキュリティ構成ディレクトリの2つのコピーを作成します。1つはバックアップとして、もう1つはプロトコルの更新のために保持します。

    ノート:

    このステップは、前のステップでのクライアント・アプリケーションの変更とは対照的に、NoSQL Databaseサーバーで使用されるストレージ・ノードのセキュリティ構成を更新するためのものです。
  3. コピーしたセキュリティ構成ディレクトリ内のSSLプロトコルを更新します。
    java -jar /kv/lib/kvstore.jar securityconfig \
    config update -secdir security \
    -param "allowProtocols=TLSv1.3,TLSv1.2" \
    -param "clientAllowProtocols=TLSv1.3,TLSv1.2"
  4. 更新されたセキュリティ構成内のプロトコルにTLSv1.3があるかどうかを確認します。
    java -jar kv/lib/kvstore.jar securityconfig config 
    show -secdir KVROOT/security
    プロトコルにTLSv1.3があるかどうかを確認します。
  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: 2021-09-04 08:50:02 UTC Version: 21.2.16
    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: 21.2.16 2021-09-04 08:50:02 UTC  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: 21.2.16 2021-09-04 08:50:02 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: 21.2.16 2021-09-04 08:50:02 UTC Build id: 0d00330822fc Rep Node [rg1-rn3]
    Status: RUNNING,REPLICA sequenceNumber:63 haPort:7010 delayMillis:? catchupTimeSecs:?
  6. 更新されたセキュリティ・ディレクトリを各サーバー・ノード(ストレージ・ノード)にコピーし、古いセキュリティ構成ディレクトリを置き換えます。次に、すべてのレプリケーション・ノードがオンラインであることを確認し、各ストレージ・ノードを順番に再起動します。次の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: 2021-09-04 08:52:02 UTC Version: 21.2.16 
    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: 21.2.16 2021-09-04 08:52:02 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: 21.2.16 2021-09-04 08:52:02 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: 21.2.16 2021-09-04 08:52:02 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: 2021-09-04 08:52:02 UTC Version: 21.2.16
    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: 21.2.16 2021-09-04 08:54:02  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: 21.2.16 2021-09-04 08:54:02 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: 2021-09-04 08:55:02 UTC Version: 21.2.16
    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: 21.2.16 2021-09-04 08:55:02 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: 21.2.16 2021-09-04 08:55:02 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: 21.2.16 2021-09-04 08:55:02 UTC Build id: 0d00330822fc
          Rep Node [rg1-rn3] Status: RUNNING,REPLICA
    sequenceNumber:63 haPort:7010 delayMillis:1 catchupTimeSecs:0
    

TLSプロトコルをTLSv1.3のみに更新

これは、NoSQL Databaseセキュリティ構成でTLSv1.3のみを有効化する手順です。既存のセキュリティ構成にすでにTLSv1.3プロトコルがあることを前提としています。そうでない場合は、最後の手順に従ってTLSv1.3を先に有効化します。

この変更後、すべてのクライアント・アプリケーションは、TLSv1.3プロトコルを使用したNoSQL DatabaseとのTLS接続のみを確立できます。この変更の前に、クライアント・アプリケーションのログイン・プロパティ・ファイルのoracle.kv.ssl.protocolsでTLSv1.3が有効になっていることを確認する必要があります。それ以外の場合は、「TLSv1.3プロトコルの有効化」の項に従って、最初にTLSv1.3を有効にします。
  1. 既存のセキュリティ構成ディレクトリの2つのコピーを作成します。1つはバックアップとして保持し、もう1つはプロトコルの更新に使用します。
  2. コピーしたセキュリティ構成ディレクトリ内のSSLプロトコルを更新します。
    java -jar /kv/lib/kvstore.jar securityconfig \
    config update -secdir security \
    -param "allowProtocols=TLSv1.3" \
    -param "clientAllowProtocols=TLSv1.3"
  3. 更新されたセキュリティ構成のプロトコルにTLSv1.3のみがあるかどうかを確認します。
    java -jar kv/lib/kvstore.jar securityconfig config 
    show -secdir KVROOT/security

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

  4. 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: 2021-09-04 08:56:02 UTC Version: 21.2.16 
    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: 21.2.16 2021-09-04 08:56:02 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: 21.2.16 2021-09-04 08:56:02 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: 21.2.16 2021-09-04 08:56:02 UTC  Build id: 0d00330822fc
            Rep Node [rg1-rn3]     Status: RUNNING,REPLICA
    sequenceNumber:63 haPort:7010 delayMillis:? catchupTimeSecs:?
  5. 更新されたセキュリティ・ディレクトリを各サーバー・ノード(ストレージ・ノード)にコピーし、古いセキュリティ構成ディレクトリを置き換えます。次に、すべてのレプリケーション・ノードがオンラインであることを確認し、各ストレージ・ノードを順番に再起動します。次の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: 2021-09-04 08:56:53 UTC Version: 21.2.16  
    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] S
    Status: RUNNING Ver: 21.2.16 2021-09-04 08:56:53 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: 21.2.16 2021-09-04 08:56:53 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: 21.2.16 2021-09-04 08:56:53 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: 2021-09-04 08:57:13 UTC Version: 21.2.16  
    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: 21.2.16 2021-09-04 08:57:13 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: 21.2.16 2021-09-04 08:57:13 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: 2021-09-04 08:57:23 UTC Version: 21.2.16
    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: 21.2.16 2021-09-04 08:57:33 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: 21.2.16 2021-09-04 08:57:33 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: 21.2.16 2021-09-04 08:57:33 UTC Build id: 0d00330822fc 
    Rep Node [rg1-rn3] Status: RUNNING,REPLICA sequenceNumber:63 haPort:7010 
    delayMillis:1 catchupTimeSecs:0

    クライアント・アプリケーションは、NoSQL DatabaseをTLSv1.3プロトコルでのみ接続できるようになりました。TLSv1.3のみを使用するようにoracle.kv.ssl.protocolsを確認および更新し、クライアント・アプリケーションを再起動してTLSv1.3のみで構成されていることを確認することをお薦めします。