オンプレミスのキュー・マネージャーへの直接接続
以下のガイドでは、 IBM MQ on Cloud キュー・マネージャーをオンプレミス・キュー・マネージャーに接続し、TLS セキュリティーを構成し、2 つのキュー・マネージャー間でメッセージを送信する方法について説明します。 これは、ライト・プラン、デフォルト・プラン、またはカスタム・プランを使用してキュー・マネージャーをデプロイしたユーザーに適用されます。 ここで概説する手順は、予約済みのデプロイメント計画の下でデプロイされたキュー・マネージャーには適していないことに注意してください。 これは、このようなデプロイメントに関連付けられた複雑なプライベート・ネットワーキング構成が原因です。
以下のステップは、2 つのキュー・マネージャー間の接続を構成して、この接続をセキュアにし、メッセージを双方向で送信できるようにするのに役立ちます。
-
MQ On Cloud キュー・マネージャーで次のキューを作成します。
- 送信キューに接続されているクラウド・アプリケーションからのメッセージを保持するリモート・キュー。
- オンプレミスのキュー・マネージャーの要求側チャネルからの応答を保持するローカル・キュー。
-
次のチャネルを作成し、MQ On Cloud キュー・マネージャーから接続するための許可を作成します。
- サーバー・チャネル-このチャネルは、オンプレミスのキュー・マネージャーから初期接続を受信し、送信キューからメッセージを転送します。
- 受信側チャネル-このチャネルは、オンプレミスの送信側チャネルから応答を受信します。
-
オンプレミスのキュー・マネージャーで次のキューを作成します。
- ローカル・キュー-このキューは、オンプレミス・アプリケーションを宛先とするメッセージを保持します。
- リモート・キュー - このキューは、クラウドのキュー・マネージャー宛てのオンプレミスのアプリケーションからの応答を保持する伝送キューに接続されます。
-
MQ On Cloud キュー・マネージャーに接続するためのチャネルと許可を作成します。
- 要求側チャネル - このチャネルはクラウドのサーバー・チャネルに対応します。ローカル・キューに接続されます。
- 送信側チャネル - このチャネルはクラウドのキュー・マネージャーの受信側チャネルに対応します。伝送キューのメッセージを受け入れてクラウドのキュー・マネージャーに転送します。
-
2 つのキュー・マネージャー間の信頼関係を許可する証明書をローカル・キュー・マネージャーに設定して、TLS セキュリティーをセットアップします。
以下の手順では、 IBM Cloud にデプロイされたアプリケーションとオンプレミス・データ・センターで実行されているアプリケーションの間で、 IBM MQ を使用してメッセージを安全に転送し、2 つのデプロイメント間で信頼性の高いセキュア接続を提供する方法について詳しく説明します。
開始前に
-
このシステムには 2 つのコンポーネントがあり、それらをセットアップしてインストールする必要があります。
-
IBM Cloud の MQ サービスを使用してデプロイされるクラウド・ホスティング・キュー・マネージャー。 以下のステップでは、これを「MyCloudQM」と呼びます。
- キュー・マネージャーの作成手順については、 キュー・マネージャーの作成 のガイドに従ってください。
-
クラウド・キュー・マネージャーに接続されるオンプレミス・キュー・マネージャー。 以下のステップでは、これを「ONPREM_QM」と呼びます。
- キュー・マネージャーがまだデプロイされていない場合は、 IBM MQ キュー・マネージャー・コンテナーをローカルで実行してこれをテストできます。 作成手順については、 コンテナーでの開発用の IBM MQ キューの取得 チュートリアルに従ってください。
-
キュー・マネージャーの管理手順については、 キュー・マネージャーの管理オプション を参照してください。
-
-
以下のようにして、後で使用するためにクラウド・キュー・マネージャーの接続の詳細を取得します。
-
IBM Cloud サービス・コンソールでサービス・インスタンスにログインします。
-
キュー・マネージャーの詳細を表示するには、そのキュー・マネージャーを表すリスト内の行をクリックします。
-
「接続情報」ボタンをクリックし、結果のダイアログ・ボックスから「JSON CCDT」を選択します。
-
後で使用するために json ファイルを保存します
特に、以下のセクションで使用するキュー・マネージャー名、ホスト名、およびリスナー・ポートを、ダウンロードした接続の詳細から書き留めておくことが重要です。
-
-
後で使用するために、クラウド・キュー・マネージャーのパブリック・キュー・マネージャー証明書を以下のように取得します。
-
IBM Cloud サービス・コンソールでサービス・インスタンスにログインします。
-
キュー・マネージャーを表すリスト内の行をクリックすると、その詳細が表示されます。
-
「鍵ストア」 タブをクリックし、デフォルトの qmgrcert を見つけます。 ハンバーガー・シンボルをクリックし、 「パブリック証明書のダウンロード (Download public certificate)」 をクリックします。
-
キュー・マネージャーの構成
オンプレミス・キュー・マネージャー
以下のガイドで示されているシナリオでは、クラウド・キュー・マネージャー (MyCloudQM) にはパブリックに到達可能な IP アドレスがないため、オンプレミス・キュー・マネージャーに直接接続できないことを前提としています。 従来の Sender-Receiver チャネルを Requester-Server チャネルに置き換える必要があります。
-
2 つのコマンド・プロンプトを開きます。1 つはオンプレミス・キュー・マネージャー用、もう 1 つはクラウド・キュー・マネージャー用です。
-
オンプレミス・キュー・マネージャーに接続します。 runmqsc を実行してリモート・キュー・マネージャーに接続し、キュー・マネージャーに ping して正常に接続したことを確認します。
runmqsc PING QMGR
-
オンプレミスのキュー・マネージャーで次のキューを作成します。
DEFINE QLOCAL(LOCAL) DEFINE QLOCAL(TO.CLOUD) USAGE(XMITQ) DEFINE QREMOTE(LOCAL.REPLY) RNAME(LOCAL.REPLY) RQMNAME('MyCloudQM') XMITQ(TO.CLOUD)
- オンプレミス・アプリケーションがコンシュームするローカル・キュー
- オンプレミスの送信側チャネルに使用される送信側キュー
- 応答メッセージをクラウド・キュー・マネージャーに戻すためのリモート・キュー定義
-
次のチャネルを作成し、MQ On Cloud キュー・マネージャーから接続するための許可を作成します。
-
クラウドに接続するオンプレミス送信側チャネル
DEFINE CHANNEL(ONPREM.TO.CLOUD) CHLTYPE(SDR) + CONNAME('<HOSTNAME>(<PORT>)') XMITQ(TO.CLOUD) TRPTYPE(TCP)
<HOSTNAME>
-これは connection_info.ccdt.json ファイル内の「host」です。<PORT>
-これは、ファイル connection_info.ccdt.json 内の「port」です。
-
オンプレミス・キュー・マネージャーからコールアウトする要求側チャネル
DEFINE CHANNEL(CLOUD.TO.ONPREM) CHLTYPE(RQSTR) + CONNAME('<HOSTNAME>(<PORT>)') TRPTYPE(TCP)
-
-
クラウド QM からの着信接続を許可するための認証レコードを作成します
SET CHLAUTH(CLOUD.TO.ONPREM) TYPE(QMGRMAP) QMNAME('MyCloudQM') ACTION(ADD) USERSRC(CHANNEL)
-
onprem queuemanager の以下のステップに従って、鍵リポジトリーを作成して構成します。
-
キュー・マネージャーの「ssl」ディレクトリーに移動します。 例えば、Windows マシンでは、これは通常
c:\ProgramData\IBM\MQ\qmgrs\<qmname>\ssl
にあります。 Linux システムでは、通常、/var/mqm/qmgrs/<qmname>/ssl
にあります。「key.kdb」ファイル (鍵/トラストストア) が既に存在する場合 このディレクトリーでは、次のステップをスキップできます。 そうでない場合は、次のように「runmqakm」コマンドを使用して鍵ストアを作成します。runmqakm -keydb -create -db key.kdb -pw passOwrd -type pkcs12 -expire 0 -stash chmod +rw key.kdb
-
ibmmqonpremqm
というラベルの自己署名証明書を作成します。runmqakm -cert -create -db key.kdb -stashed -dn "CN=LOCALQM O=IBM,C=GB" -label ibmmqonpremqm
-
runmqsc に接続し、キー・リポジトリーのパスを指すように
SSLKEYR
属性を変更します。runmqsc ALTER QMGR SSLKEYR('/var/mqm/qmgrs/ONPREM_QM/ssl/key')
クラウド・キュー・マネージャー
-
コマンド・プロンプトを開始し、runmqsc を使用してクラウド・キュー・マネージャーを構成します。
-
環境変数
MQCCDTURL
およびMQSSLKEYR
を、ダウンロードした CCDT ファイルおよび証明書の絶対パスにそれぞれ設定します。-
Linux/Mac の場合:
unset MQSERVER export MQCCDTURL=<full-path-to-ccdt-file> export MQSSLKEYR=<full-path-to-keydb-file>
-
Windows の場合:
unset MQSERVER set MQCCDTURL=<full-path-to-ccdt-file> set MQSSLKEYR=<full-path-to-keydb-file>
-
-
runmqscを使用し、 MQ ユーザー名とプラットフォーム API キーを使用してクラウド・キュー・マネージャーに接続します (API キーは、UI からクラウド・キュー・マネージャーにアクセスしたときに管理タブの下に生成されます)。 パスワードを求めるプロンプトが表示されたら、API キーを指定する必要があります)
runmqsc -u myusername -c MyCloudQM
-
コマンドを実行して、正常に接続されたことを確認します。
runmqsc PING QMGR
-
クラウド・キュー・マネージャーでのキューの作成
DEFINE QLOCAL(TO.ONPREM) USAGE(XMITQ) DEFINE QREMOTE(LOCAL) RNAME(LOCAL) RQMNAME(ONPREM_QM) XMITQ(TO.ONPREM) DEFINE QLOCAL(LOCAL.REPLY)
- クラウド送信側チャネルに使用される送信キュー
- オンプレミス・キューにメッセージをアドレス指定できるようにするリモート・キュー定義
- オンプレミス・アプリケーションからの応答メッセージを保持するために使用されるローカル・キュー
-
オンプレミスのキュー・マネージャーが接続できるようにするためのチャネルおよび許可を作成します。
-
オンプレミスの要求側チャネルに応答するサーバー・チャネル
DEFINE CHANNEL(CLOUD.TO.ONPREM) CHLTYPE(SVR) XMITQ(TO.ONPREM) TRPTYPE(TCP)
-
オンプレミス送信側チャネルからの接続を受け入れる受信側チャネル
DEFINE CHANNEL(ONPREM.TO.CLOUD) CHLTYPE(RCVR) TRPTYPE(TCP)
-
-
オンプレミス QM 送信側チャネルおよびオンプレミス QM 要求側チャネルからの着信接続を許可するためのチャネル認証レコードを作成します。
SET CHLAUTH(ONPREM.TO.CLOUD) TYPE(QMGRMAP) QMNAME(ONPREM_QM) ACTION(ADD) USERSRC(CHANNEL) SET CHLAUTH(CLOUD.TO.ONPREM) TYPE(QMGRMAP) QMNAME(ONPREM_QM) ACTION(ADD) USERSRC(CHANNEL)
TLS セキュリティーの構成
-
クラウド・キュー・マネージャーは既にデフォルトのサーバー証明書 (Let 's Encrypt 発行のワイルドカード証明書) で構成されているため、そのサーバー証明書をオンプレミス・マシンにダウンロードし、それを信頼するようにキュー・マネージャーを構成する必要があります。
-
onprem キュー・マネージャーで、キュー・マネージャーの「ssl」ディレクトリーに移動します。 次に、前にダウンロードしたクラウド・パブリック証明書を追加します。 ラベルは
ibmmq<qmname>
にする必要があります。ここで、qmname
はクラウド・キュー・マネージャーの名前 (小文字) です。runmqakm -cert -add -db key.kdb -stashed -label ibmmqmycloudqm -file <path_to_cert>\qmgrcert.pem
-
次のコマンドを実行して、証明書が存在することを確認します。
runmqakm -cert -list -db key.kdb -stashed
-
2 つのキュー・マネージャー間の信頼関係を許可する証明書をローカル・キュー・マネージャーに設定して、TLS セキュリティーをセットアップします。
-
オンプレミス・キュー・マネージャー
runmqsc ALTER CHL('ONPREM.TO.CLOUD') CHLTYPE(SDR) SSLCIPH(ANY_TLS12_OR_HIGHER) ALTER CHL('CLOUD.TO.ONPREM') CHLTYPE(RQSTR) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(OPTIONAL)
-
クラウド・キュー・マネージャー
runmqsc ALTER CHL('ONPREM.TO.CLOUD') CHLTYPE(RCVR) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(OPTIONAL) ALTER CHL('CLOUD.TO.ONPREM') CHLTYPE(SVR) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(OPTIONAL)
-
相互認証 TLS セキュリティーの有効化
このセクションでは、上記で定義したサーバー認証 TLS 対応チャネルを取得し、それらを変更して 2 つのキュー・マネージャー間の相互認証を有効にします。これを行うには、オンプレミス・キュー・マネージャーによって提示されるサーバー証明書を「信頼する」ようにクラウド上のキュー・マネージャーを構成する必要があります。
-
鍵リポジトリーのセットアップ中にオンプレミス・キュー・マネージャー用の自己署名証明書をまだ作成していない場合は、
runmqakm
を使用して作成します。 コマンドはすべて 1 行にする必要があり、ラベルはibmmq<qmname>
にする必要があることに注意してください。ここで、<qmname>
は、オンプレミスのキュー・マネージャーの名前 (小文字) です。runmqakm -cert -create -db key.kdb -stashed -dn “CN=LOCALQM,O=IBM,C=GB” -label ibmmqonprem_qm
-
runmqakm を使用して、オンプレミス・マシン上の自己署名個人証明書の公開部分を抽出します (コマンドはすべて 1 行で入力する必要があります)。
runmqakm -cert -extract -db key.kdb -stashed -label ibmmqonprem_qm -target <path_to_download_directory>/onpremcert.pem -format ascii -fips
-
ここで、「onpremcert.pem」ファイルをクラウド上のキュー・マネージャーのトラステッド鍵ストアにインポートする必要があります。
- Web ブラウザーで IBM Cloud コンソール に移動し、 MQ サービス・インスタンスを見つけます。
- キュー・マネージャーのリストから、キュー・マネージャー (MyCloudQM) が含まれている行をクリックしてその詳細ビューに移動し、「トラストストア」タブをクリックします。
- 「証明書のインポート (Import certificate)」をクリックし、「ファイルの参照 (Browse files)」をクリックして、前のステップでダウンロードした onpremcert.pem ファイルにナビゲートします。
- 次に「開く」をクリックし、次に「次へ」をクリックします。 証明書に指定するラベル (「ibmmqonprem_qm」など) を指定します。 次に「保存」をクリックします。
これで、新しくインポートされた証明書がトラストストア内の証明書のリストに表示され、信頼できるものとして表示されます。
-
クラウド・キュー・マネージャーを構成するために開いた runmqsc コマンド・プロンプトに戻ります (クラウド・キュー・マネージャーを閉じた場合は、新しいプロンプトを開きます)。
-
クラウド・キュー・マネージャーに接続したことを確認し、
SSLCIPH
およびSSLCAUTH
の設定を既存のチャネルに適用します。runmqsc DISPLAY QMGR QMNAME ALTER CHL('ONPREM.TO.CLOUD') CHLTYPE(RCVR) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(REQUIRED) ALTER CHL('CLOUD.TO.ONPREM') CHLTYPE(SVR) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(REQUIRED)
-
SSL セキュリティーをリフレッシュして、現在実行中のすべての SSL または TLS チャネルが更新されるようにします。
REFRESH SECURITY TYPE(SSL)
-
-
ここで、オンプレミスのキュー・マネージャーで同等のステップを実行する必要があります。 オンプレミス・キュー・マネージャーの元のコマンド・プロンプトに戻ります (または、閉じている場合は新しいコマンド・プロンプトを開きます)。
runmqsc DISPLAY QMGR QMNAME ALTER CHL('CLOUD.TO.ONPREM') CHLTYPE(RQSTR) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(REQUIRED) REFRESH SECURITY TYPE(SSL)
-
これで、相互認証 TLS のチャネルの構成が完了しました。
接続の検証
このセクションでは、定義したチャネルを開始し、それらが正常に実行されていることを確認し、各方向にテスト・メッセージを送信してメッセージのフローを証明します。
オンプレミス・キュー・マネージャーは、クラウドへのアウトバウンド接続と、クラウドからのインバウンド接続 (オンプレミス・リクエスター・チャネル経由) の両方を開始する必要があるため、オンプレミス・キュー・マネージャー側から両方のチャネルを開始する必要があります。 オンプレミス・キュー・マネージャーの runmqsc セッションに戻ります (元のキュー・マネージャーを閉じた場合は、新しいキュー・マネージャーを作成します)。
-
オンプレミス QM に接続されていることを確認します。「ONPREM_QM」が表示されます。
runmqsc DISPLAY QMGR QMNAME
-
オンプレミスからクラウド・キュー・マネージャーへの送信側チャネルを開始します。
START CHANNEL(ONPREM.TO.CLOUD)
-
15 秒間待機し、送信側チャネルに STATUS (RUNNING) が表示されていることを確認します。
DISPLAY CHSTATUS(ONPREM.TO.CLOUD) SSLPEER
-
オンプレミス・キュー・マネージャーで要求側チャネルを開始します。
START CHANNEL(CLOUD.TO.ONPREM)
-
15 秒間待機し、要求側チャネルに STATUS (RUNNING) が表示されていることを確認します。
DISPLAY CHSTATUS(CLOUD.TO.ONPREM) SSLPEER
両方のチャネルが STATUS (RUNNING) を示し、いずれの場合も SSLPEER の値が一致する必要があります。
クラウドからオンプレミスのキュー・マネージャーにメッセージを送信するテスト
-
onprem キュー・マネージャーのコマンド・プロンプトに戻ります。 ローカル・キューの現在のキュー項目数がゼロであることを確認し、クラウドからオンプレミスへのメッセージの伝送をテストする準備ができていることを確認します。
runmqsc DISPLAY QSTATUS(LOCAL) CURDEPTH
- CURDEPTH (0) を表示する必要があります
-
IBM Cloudで、 MQ on Cloud サービス・インスタンスに移動し、キュー・マネージャー「MyCloudQM」にナビゲートして、mq コンソールを起動します。
-
キュー・マネージャー管理の左側のナビゲーション・パネルの「管理」タブにナビゲートします。
-
「キュー」タブをクリックし、表示されたテーブルから「LOCAL」という名前のリモート・キューを見つけます。
-
キューの 「アクション」 アイコン
をクリックしてから、「メッセージの作成」をクリックします。
-
「アプリケーション・データ」セクションに単純なメッセージを書き込み、「作成」ボタンを押します。
-
ここで、ONPREM_QM の runmqsc ウィンドウに戻り、コマンドを再実行してローカル・キューのキュー項目数を表示します。 キュー項目数が 1 に増加したことが分かります。これは、メッセージがクラウド・キュー・マネージャーからオンプレミス・キュー・マネージャーに正常に送信されたことを示しています。
オンプレミスからクラウド・キュー・マネージャーへのメッセージの送信のテスト
「amqsput」コマンド・ライン・ユーティリティーを使用して ONPREM_QM に接続し、クラウド・キュー・マネージャーに送信されるテスト・メッセージを送信します。
-
「オンプレミス」の仮想マシンで新しいコマンド・プロンプトを開き、以下の「amqsput」コマンドを入力してキューに接続し、メッセージの単純なテキストを入力し、Enter キーを 2 回押します (1 回目はメッセージの終了、2 回目は終了)。
amqsput LOCAL.REPLY ONPREM_QM Hello from on-premises <enter> <enter>
-
次に、クラウド・キュー・マネージャーの MQ コンソールに戻り、右上隅にある「最新表示」アイコン (円で囲まれた 2 つの矢印) をクリックして、 LOCAL.REPLY は 0 ではなく 1 になりました。