SSL および TLS 秘密鍵のリセット

IBM® MQ は、キュー・マネージャーおよびクライアントでの秘密鍵のリセットをサポートします。

特定バイト数の暗号化されたデータがチャネルを流れた場合、秘密鍵がリセットされます。 チャネル・ハートビートが有効になっている場合は、チャネル・ハートビートに続いてデータが送受信される前に秘密鍵がリセットされます。

キー・リセット値は、常に IBM MQ チャネルの開始側によって設定されます。

キュー・マネージャー

キュー・マネージャーの場合、コマンド ALTER QMGR にパラメーター SSLRKEYC を指定して使用し、鍵の再ネゴシエーション中に使用する値を設定します。

[IBM i]On IBM i, CHGMQM with SSLRSTCNT parameter.

MQI クライアント

デフォルトでは、MQI クライアントは秘密鍵の再ネゴシエーションは行いません。 3 つの方法のいずれかによって、MQI クライアントで鍵の再ネゴシエーションを実行できます。 次のリストでは、優先度の高い順に方法を示しています。 複数の値を指定している場合は、最高の優先度の値が使用されます。
  1. MQCONNX 呼び出しで MQSCO 構造体の KeyResetCount フィールドを使用する。
  2. 環境変数 MQSSLRESETを使用する。
  3. クライアント構成ファイルの SSL スタンザSSLKeyResetCount 属性を設定します。
これらの変数は、0 から 999 999 999 の範囲の整数に設定することができ、TLS 秘密鍵が再ネゴシエーションされる前に、TLS 会話内で送受信される暗号化されていないバイト数を表します。 0 の値を指定すると、TLS 秘密鍵は絶対に再ネゴシエーションされません。 TLS 秘密鍵のリセット・カウントを 1 バイトから 32 KB の範囲で指定すると、TLS チャネルは 32 KB の秘密鍵リセット・カウントを使用します。 これは、TLS 秘密鍵のリセット値が小さい場合に生じる可能性のある、鍵の過度のリセットを防ぐためです。

このチャネルに対して、ゼロよりも大きな値が指定され、チャネルのハートビートが有効化されている場合、チャネル・ハートビートに続けてメッセージ・データが送受信される前に、秘密鍵も再ネゴシエーションされます。

再ネゴシエーションが成功するごとに、次の秘密鍵の再ネゴシエーションまでのバイト数がリセットされます。

Java

IBM MQ classes for Javaの場合、アプリケーションは以下のいずれかの方法で秘密鍵をリセットできます。
  • MQEnvironment クラスの sslResetCount フィールドを設定する方法。
  • Hashtable オブジェクトの環境プロパティー MQC.SSL_RESET_COUNT_PROPERTY を設定する。 この方法では、アプリケーションによって、MQEnvironment クラスの properties フィールドにハッシュ・テーブルが割り当てられるか、またはそのコンストラクターで MQQueueManager オブジェクトにハッシュ・テーブルが受け渡されます。
アプリケーションでこれらの方法を複数使用する場合、通常の優先順位ルールが適用されます。 優先順位規則については、 クラス com.ibm.mq.MQEnvironment を参照してください。

sslResetCount フィールドまたは環境プロパティ MQC.SSL_RESET_COUNT_PROPERTY の値は、秘密鍵が再ネゴシエートされる前に IBM MQ classes for Java クライアントコードが送受信したバイト数の合計を表します。 送信バイト数は暗号化前の数であり、受信バイト数は暗号化解除された後の数です。 バイト数には、 IBM MQ classes for Java クライアントによって送受信される制御情報も含まれます。

リセット・カウントがゼロ (デフォルト値) の場合、秘密鍵は再ネゴシエーションされません。 CipherSuite が指定されていない場合、リセット・カウントは無視されます。

JMS

IBM MQ classes for JMSの場合、SSLRESETCOUNT プロパティーは、暗号化に使用される秘密鍵が再ネゴシエーションされる前に接続によって送受信される合計バイト数を表します。 送信バイト数は暗号化前の数であり、受信バイト数は暗号化解除された後の数です。 バイト数には、 IBM MQ classes for JMSによって送受信される制御情報も含まれます。 例えば、TLS 対応の MQI チャネル (このチャネルの秘密鍵は、4 MB のデータが流れた後再ネゴシエーションされる) を介した接続の作成に使用できる ConnectionFactory オブジェクトを構成するには、JMSAdmin に対して次のコマンドを発行します。
ALTER CF(my.cf) SSLRESETCOUNT(4194304)

SSLRESETCOUNT の値がゼロ (デフォルト値) の場合、秘密鍵の再ネゴシエーションは行われません。 SSLCIPHERSUITE が設定されていない場合、SSLRESETCOUNT プロパティーは無視されます。

.NET

.NET 非管理対象クライアントの場合、整数プロパティー SSLKeyResetCount は、秘密鍵が再ネゴシエーションされる前に TLS 会話内で送受信される暗号化されていないバイト数を示します。 IBM MQ classes for .NETでのオブジェクト・プロパティーの使用について詳しくは、 属性値の取得および設定を参照してください。

.NET 管理対象クライアントの場合、SSLStream クラスは秘密鍵のリセット/再ネゴシエーションをサポートしません。 ただし、他の IBM MQ クライアントとの整合性を保つために、 IBM MQ 管理対象 .NET クライアントでは、アプリケーションで SSLKeyResetCountを設定することができます。 詳しくは、 秘密鍵のリセットまたは再ネゴシエーションを参照してください。

XMS .NET

XMS .NET 非管理対象クライアントについては、 IBM MQ キュー・マネージャーへのセキュア接続を参照してください。