runmqsc を使用したリモート管理の保護
ここでは、runmqsc
コマンド・ライン・インターフェースを使用して、MQ on Cloud キュー・マネージャーをリモート管理するために TLS を有効化するプロセスについて説明します。
事前の準備
- キュー・マネージャーがバージョン 9.2.1 リビジョン 1 以前である場合は、最初に MQ チャネルで TLS セキュリティーを構成する必要があります。 それより新しいバージョンでは、TLS はデフォルトで ANY_TLS12_OR_HIGHER 暗号を使用して有効になります。
- TLS を有効にする方法について詳しくは、『MQ on Cloud における MQ チャネルでの TLS セキュリティーの有効化』を参照してください。
- このトピックでは、暗号仕様が ANY_TLS12_OR_HIGHER、SSL 認証 (SSLCAUTH) が「オプション」として指定された、CLOUD.ADMIN.SVRCONN チャネルが構成されていることを前提としています。
- このトピックの末尾にある追加のセクションでは、runmqsc クライアントの相互 TLS 認証をサポートするために TLS 構成を拡張する方法について説明します。
- このトピックでは、JSON 形式の CCDT を使用して、キュー・マネージャーへの接続方法を runmqsc に指示する方法を説明します。
- JSON 形式の CCDT を使用するには、IBM MQ v9.1.2 以上の runmqsc インストール済み環境が必要です。 これより前の Runmqsc バージョンは、JSON 形式の CCDT をサポートしていません。
- 必要に応じて、バイナリー CCDT を使用して runmqsc をキュー・マネージャーに接続することもできます。ただし、このトピックで説明される手順は JSON CCDT に固有のものです。
- クライアント鍵ストア・ファイルを構成するには、
runmqakm
などのツールが必要です。- これらのツールは、IBM MQ のフルインストール、またはご使用のオペレーティング・システム用の MQ クライアントのインストールに含まれています。
- フルインストールとクライアント・インストールはどちらも、「MQ ダウンロード」ページから入手できます。
- MacOS でネイティブに runmqsc を使用するための、MacOS toolkit for Developers クライアントも用意されています。
標準 (「片方向」) TLS 接続を使用するための runmqsc の構成
接続先のキュー・マネージャーが記述された JSON CCDT ファイルをダウンロードまたは作成します。
キュー・マネージャーの詳細ページで「接続情報」ボタンをクリックし、「JSON CCDT」形式を選択して、JSON CCDT をダウンロードすることができます。 ダウンロードした JSON CCDT にはチャネルに関連付けた暗号仕様が含まれていない点に注意してください。下記の例に示すように、チャネルごとに transmissionSecurity 定義を追加することによって、暗号仕様を手動で含める必要があります。
別の方法として、ここに用意されているサンプル・テンプレートをコピーして、ホスト、ポート、queueManager、およびチャネルの値を、ご使用のキュー・マネージャーと一致するように更新することもできます。
{
"channel": [
{
"name": "CLOUD.ADMIN.SVRCONN",
"clientConnection": {
"connection": [
{
"host": "qm1-1234.qm.us-south.mq.appdomain.cloud",
"port": 31500
}
],
"queueManager": "QM1"
},
"transmissionSecurity": {
"cipherSpecification": "ANY_TLS12_OR_HIGHER"
},
"type": "clientConnection"
}
]
}
上記の JSON CCDT の例では、暗号仕様が ANY_TLS12_OR_HIGHER として指定されています。これにより、runmqsc クライアントは、チャネルの構成で許可されている暗号に基づいて、TLS v1.2 暗号ファミリーの範囲内で、許可された暗号のネゴシエーションをキュー・マネージャーとの間で実行できます。 柔軟性を最大限に高めるために、キュー・マネージャー・チャネルも ANY_TLS12_OR_HIGHER として構成して、クライアントとサーバーの間のネゴシエーションを可能にすることができます。
runmqsc 環境に必要な環境変数を構成します。
runmqsc クライアントが JSON CCDT を使用してキュー・マネージャー接続の詳細 (前のステップで定義した、チャネルの暗号仕様の名前も含む) を取得するよう指示する、環境変数を構成します。
-
コマンド・プロンプト・ウィンドウを開き、インストール済み環境における MQ の
bin
ディレクトリーにナビゲートします。 この場所は、オペレーティング・システムに応じて異なります。以下に例を示します。表 1. 各種オペレーティング・システムでのインストール・ファイルの場所 オペレーティング・システム ファイルの場所 Linux フル MQ インストール /var/mqm/bin
Windows C:\Program Files\IBM\MQ\bin
Linux/Mac、クライアント・インストールを使用 ~/mytoolkit/IBM-MQ-Toolkit-Mac-x64-9.1.2.0/bin
-
MQCCDTURL
環境変数を設定して、runmqsc クライアントに JSON CCDT を読み取るように指示します。MQCCDTURL
変数は、JSON CCDT ファイルを指す URL です。-
MQCCCDTURL は、システム・ルートから ccdt ファイルへの絶対ファイル・パスです。
# Linux/MacOS export MQCCDTURL=file:///Users/myuser/connection_info_ccdt.json unset MQSERVER # Windows set MQCCDTURL=file:///c:/temp/connection_info_ccdt.json set MQSERVER=
MQSERVER 変数を設定してはなりません。設定した場合、JSON CCDT の設定よりも優先されます。
-
CCDT ファイルの場所を指定する方法は 2 つあります。MQCCDTURL が機能しない場合は、以下で説明するように MQCHLTAB と MQCHLLIB の設定を試してください。
MQCHLLIB は、システム・ルートから ccdt ファイルが置かれているディレクトリーへの絶対パスです。
export MQCHLLIB=/path/to/ccdt set MQCHLLIB=c:\path\to\ccdt
MQCHLTAB は、ccdt ファイルのファイル名です。
export MQCHLTAB=connection_info_ccdt.json set MQCHLTAB=connection_info_ccdt.json
-
-
MQSSLKEYR 環境変数を設定して、キュー・マネージャーによって提示される TLS 証明書を runmqsc クライアントが信頼できるようにします。
MQSSLKEYR 変数を、システム・ルートから、キュー・マネージャーによって提示される TLS 証明書が入っている鍵ストア・ファイルへの絶対パスに設定する必要があります。
鍵ストア・ファイルがまだ存在しない場合は、鍵ストアの作成に関するトピックに従って作成することができます。その手順には、サービス・コンソールのユーザー・インターフェースからキュー・マネージャーのパブリック証明書をダウンロードすることも含まれます。
ファイルの「
.kdb
」接尾部をMQSSLKEYR
値に付けてはならないことに注意してください。「key.kdb
」という名前の鍵ストアの場合は、単に「key
」と指定します。# Linux/MacOS export MQSSLKEYR=/Users/myuser/key # Windows set MQSSLKEYR=c:\temp\key
runmqsc
コマンドを実行して、キュー・マネージャーに接続します。
これで必要な環境のセットアップが完了したため、runmqsc
コマンドを実行してキュー・マネージャーに接続することができます。
通常、runmqsc コマンドには以下の入力が必要です。
- MQ 管理者のユーザー名と API キー。これらは、必要な接続の詳細の収集に示されているようにサービス・コンソールから取得します。 これは、アプリケーションのユーザー名と API キーではなく、管理者のユーザー名と API キーでなければならない点に注意してください。
- キュー・マネージャー名。これは、JSON CCDT ファイルで指定されている名前と一致していなければなりません。例えば、「QM1」などとなります。
<Path to MQ/bin directory>/runmqsc -c -u mqusername QM1
この runmqsc でのすべての操作が、保護されたチャネルで実行されるようになります。
相互 (「双方向」) TLS 接続を使用するための runmqsc の構成
以下のステップでは、上記の手順を拡張して、runmqsc クライアントとキュー・マネージャーの間の相互 TLS 接続を構成する方法について説明します。
相互 TLS シナリオでは、クライアント (例えば、runmqsc) がクライアント証明書をキュー・マネージャーに提示します。また、キュー・マネージャーが、着信するそのクライアント証明書を信頼するように構成されている必要があります。
-
runmqsc クライアントを識別する TLS クライアント証明書を生成します。
組織によっては、TLS クライアント証明書が中央認証局 (CA) によって生成されます。 この例では、独自の自己署名クライアント証明書を生成します。
# Generate a new private key and public certificate for the client # (fill in the segments of the certificate as you wish when prompted) openssl req -newkey rsa:2048 -nodes -keyout clientKey.pem -x509 -days 365 -out clientCert.pem # Combine the private key and public certificate into a single file cat clientKey.pem > clientCombined.pem cat clientCert.pem >> clientCombined.pem
-
新しく生成されたクライアント証明書をローカル鍵ストア・ファイルに追加します。
クライアント鍵/証明書の組み合わせを鍵ストア・ファイルにインポートし、使用するラベルをメモします。
runmqakm -cert -add -db key.kdb -file clientCombined.pem -label runmqsc -stashed -type pkcs12 -format ascii
-
クライアント証明書を信頼するようにキュー・マネージャーを構成します。
- MQ on Cloud サービス・コンソールのユーザー・インターフェースでキュー・マネージャーの詳細ページにナビゲートし、「トラスト・ストア」タブを選択して、クライアント証明書の公開部分をインポートします。
- 「証明書のインポート」ボタンをクリックし、クライアント証明書の公開部分を含むファイル (例:
clientCert.pem
) を選択します。 - 「次へ」をクリックし、証明書のラベルを選択します (クライアント鍵ストア・ファイルのラベルと同じである必要はありません)。そして、「保存」をクリックします。
- 証明書がアップロードされると、キュー・マネージャーの SSL セキュリティー構成をリフレッシュするように要求されます。この操作は、ここで説明されているように、MQ コンソール、MQ エクスプローラー、または runmqsc を使用して行うことができます。
-
相互 TLS を要求するようにキュー・マネージャー・チャネルを構成します。
- チャネルの TLS モードは、チャネルの「
SSL Authentication
」属性によって制御されます。相互 TLS を有効にするには、この属性を「Required
」に設定する必要があります。 この属性は、MQ コンソールまたは MQ エクスプローラーを使用して UI で設定できます。あるいは、runmqsc を使用する場合は、属性「SSLCAUTH
」を「REQUIRED
」に設定する必要があります。
- チャネルの TLS モードは、チャネルの「
-
キュー・マネージャーに接続するときにクライアント証明書を提示するように runmqsc を構成します。
- 「
MQCERTLABL
」環境変数を、ローカル鍵ストア・ファイル内のクライアント証明書のラベルに設定します。その後、runmqsc コマンドを実行してキュー・マネージャーに接続することができます。今回は、相互 TLS 認証を使用して構成されます。
export MQCERTLABL=runmqsc runmqsc -c -u mqusername QM1
- 「
次のステップ
チャネルで TLS が有効になっているキュー・マネージャーにアプリケーションを接続する場合は、以下のトピックの手順に従うことができます。