![[OpenShift Container Platform]](ngocp.gif)
![[IBM Cloud Pak for Integration]](ngcp4i.gif)
![[Linux]](nglinux.gif)
範例: 配置 TLS
此範例使用 IBM® MQ Operator將佇列管理程式部署至 OpenShift® Container Platform 。 在範例用戶端與佇列管理程式之間配置單向 TLS 通訊。 此範例透過放置及取得訊息來示範成功的配置。
開始之前
若要完成此範例,您必須先完成下列必要條件:
- 安裝 IBM MQ client,並將 samp/bin 及 bin 新增至 PATH。 您需要 runmqakm、 amqsputc 和 amqsgetc 應用程式,它們可以安裝成 IBM MQ client 的一部分,如下所示:
![[Windows]](ngwin.gif)
若為 Windows 及 Linux®: 從 https://ibm.biz/mq93redistclients 安裝適用於您作業系統的 IBM MQ 可重新配送用戶端。
若為 Mac: 下載並設定 IBM MQ MacOS Toolkit: https://developer.ibm.com/tutorials/mq-macos-dev/
- 安裝適用於您作業系統的 OpenSSL 工具。
- 針對此範例建立 OpenShift Container Platform (OCP) 專案/名稱空間。
- 在指令行上,登入 OCP 叢集,並切換至上述名稱空間。
- 請確定上述名稱空間中已安裝 IBM MQ Operator 且可供使用。
關於此作業
此範例提供自訂資源 YAML ,定義要部署至 OpenShift Container Platform的佇列管理程式。 它也會詳細說明在啟用 TLS 的情況下部署佇列管理程式所需的其他步驟。 完成時,放置及取得訊息會驗證佇列管理程式是否已配置 TLS。
為 IBM MQ 伺服器建立 TLS 私密金鑰和憑證
下列程式碼範例顯示如何建立佇列管理程式的自簽憑證,以及如何將憑證新增至金鑰資料庫,以充當用戶端的信任儲存庫。 如果您已有私密金鑰和憑證,則可以改用那些憑證。
請注意,自簽憑證只能用於開發目的。
- 在現行目錄中建立自簽私密金鑰及公用憑證
- 請執行下列指令:
openssl req -newkey rsa:2048 -nodes -keyout tls.key -subj "/CN=localhost" -x509 -days 3650 -out tls.crt - 將伺服器公開金鑰新增至用戶端金鑰資料庫
- 金鑰資料庫用作用戶端應用程式的信任儲存庫。
- 配置用於佇列管理程式部署的 TLS 憑證
- 為了讓您的佇列管理程式可以參照及套用金鑰和憑證,請建立 Kubernetes TLS 密鑰,並參照上面建立的檔案。 當您這麼做時,請確定您在開始此作業之前所建立的名稱空間中。
oc create secret tls example-tls-secret --key="tls.key" --cert="tls.crt" - 建立包含 MQSC 指令的配置對映
- 建立包含 MQSC 指令的 Kubernetes 配置對映,以建立新的佇列及「SVRCONN 通道」,以及新增通道鑑別記錄,只封鎖那些稱為 nobody的使用者來容許存取通道。
請注意,此方法應該僅用於開發目的。
- 建立必要的 OCP 路徑
- 請確定您在開始此作業之前所建立的名稱空間中,然後在 OCP 使用者介面中輸入下列 YAML ,或使用指令行。
apiVersion: route.openshift.io/v1 kind: Route metadata: name: example-tls-route spec: host: secureqmchl.chl.mq.ibm.com to: kind: Service name: secureqm-ibm-mq port: targetPort: 1414 tls: termination: passthrough請注意, Red Hat® OpenShift Container Platform Router 會使用 SNI 將要求遞送至 IBM MQ 佇列管理程式。 如果您在先前建立的配置對映中變更 MQSC 中指定的通道名稱,則也需要在這裡及稍後建立的 CCDT 檔案中變更主機欄位。 如需相關資訊,請參閱 配置路徑以從 Red Hat OpenShift 叢集外部連接至佇列管理程式。
- 部署佇列管理程式
- 重要事項: 在此範例中,為了進行測試,我們使用 MQSNOAUT 變數來停用佇列管理程式中的安全檢查。 這可讓我們聚焦在使用 TLS 連接用戶端所需的步驟。 不過,將 MQSNOAUT 設為 yes 不適用於 IBM MQ的正式作業部署,因為它會導致任何連接的應用程式具有完整管理權力,且沒有降低個別應用程式許可權的機制。 請參閱 防止 AIX®, Linux, and Windows 系統上的安全存取檢查。
- 確認佇列管理程式正在執行中
- 現在正在部署佇列管理程式。 請先確認它處於
Running狀態,然後再繼續。 例如:oc get qmgr secureqm - 測試佇列管理程式的連線
- 若要確認佇列管理程式已配置單向 TLS 通訊,請使用 amqsputc 及 amqsgetc 範例應用程式:
- 尋找佇列管理程式主機名稱
- 使用下列指令來尋找路徑
secureqm-ibm-mq-qm的佇列管理程式完整主機名稱:oc get routes secureqm-ibm-mq-qm - 指定佇列管理程式詳細資料
- 建立 CCDT.JSON 檔案,以指定佇列管理程式詳細資料。 將主機值取代為前一個步驟中的主機名稱。
{ "channel": [ { "name": "SECUREQMCHL", "clientConnection": { "connection": [ { "host": "<hostname from previous step>", "port": 443 } ], "queueManager": "SECUREQM" }, "transmissionSecurity": { "cipherSpecification": "ECDHE_RSA_AES_128_CBC_SHA256" }, "type": "clientConnection" } ] } - 匯出環境變數
- 以適合您作業系統的方式匯出下列環境變數。 amqsputc 和 amqsgetc將會讀取這些變數。
- 將訊息放入佇列
- 請執行下列指令:
amqsputc EXAMPLE.QUEUE SECUREQM - 從佇列擷取訊息
- 請執行下列指令:
amqsgetc EXAMPLE.QUEUE SECUREQM
恭喜,您已順利部署已啟用 TLS 的佇列管理程式,並顯示您可以從用戶端安全地放置訊息並取得訊息至佇列管理程式。