在 MQ on Cloud 中为 MQ 通道启用 TLS 安全性
缺省情况下,在没有 TLS 安全性的情况下配置了 MQ on Cloud V9.2.1 修订版 2 之前的队列管理器。 更高版本在管理和应用程序通道上具有 TLS 安全性。 本指南说明 TLS 安全性,并允许您将较早的队列管理器升级到与较新的队列管理器相同的安全级别。 后面的部分显示了如何下载应用程序连接到队列管理器所需的证书。
应用程序或管理软件需要信任 MQ on Cloud 队列管理器证书的公用证书。 这可以是签发者证书,也可以是单个队列管理器证书。 这两种证书都可通过 MQ on Cloud 服务控制台下载。
您需要从 MQ on Cloud 队列实例中收集一些数据:
- 管理用户的用户名和密码。
- 应用程序用户的用户名和密码。
- 从根 CA 证书开始到队列管理器证书结束的证书链。
- 设置为 JSON 格式的队列管理器描述(称为 CCDT 数据)。
以下段落将指导您从 MQ on Cloud 控制台收集数据,还将指导您完成设置密钥库以管理本地计算机上的可信公用证书的过程。 在本文档末尾链接的后续页面将说明如何使用 TLS 进行远程管理,以及如何将 C 和 JMS MQ 样本连接到队列管理器。
以下描述将更改 CLOUD.ADMIN.SVRCONN 通道 - 这将允许管理员进行安全连接。 与此类似,我们还将更改 CLOUD.APP.SVRCONN 通道,该通道将由 C 或 JMS 样本等应用程序使用。
您将需要访问适用于您操作系统的 MQ 工具 (例如, runmqakm)。 这些工具是 Linux 和 Windows 上 MQ 安装的一部分,最近在面向开发者的 MacOS 工具箱中提供了这些工具。 此外,这些工具还可以作为单独的 MQ 客户机从 MQ Downloads 页面下载。
参考文档
以下链接提供了有关如何使用标准管理工具来管理 MQ on Cloud 队列管理器的有用参考信息。 您可以选择喜欢的工具,并按照本文档中的指示信息进行操作。
在 MQ on Cloud 队列管理器上执行的任务
如前所述,在 MQ 通道上启用安全性需要配置密码规范,并在队列管理器与客户机之间交换公用证书(对于相互 TLS,还需要在客户机与队列管理器之间交换公用证书)。 可以使用三个标准 MQ 管理工具中的任一个来配置密码规范。 下面针对每种工具说明了配置密码规范的方法,请选择您喜欢的工具并按照指示信息进行操作。 要访问用户凭证和证书,需要 MQ on Cloud 服务控制台。
使用 MQ on Cloud 服务控制台收集凭证和证书
-
打开 MQ on Cloud 服务控制台,并找到您的队列管理器。
-
收集管理员用户的凭证。 当您首次选择队列管理器的 管理选项卡时,您的用户将被授予管理员许可权。 您应该记下该用户名,然后执行下载 API 密钥(这是您日后用于连接的密码)的步骤。
-
为 JMS 和 C 应用程序创建应用程序用户。 选择队列管理器的 应用程序凭证选项卡,然后执行添加新应用程序凭证的过程。 保存生成的 API 密钥,这是供应用程序建立连接的密码。
-
下载队列管理器的 JSON CCDT 描述,单击 连接信息 按钮,然后按照指示信息下载连接信息的 CCDT 表单。 您可能还希望下载文本版本 (更易于阅读) 以及队列管理器名称和 URL 的有用源。
下载的 CCDT 文件应类似于以下内容:
{ "channel": [ { "name": "CLOUD.ADMIN.SVRCONN", "clientConnection": { "connection": [ { "host": "myhost.cloud.ibm.com", "port": 31605 } ], "queueManager": "MQ_ONE" }, "transmissionSecurity": { "cipherSpecification": "ANY_TLS12_OR_HIGHER" }, "type": "clientConnection" }, { "name": "CLOUD.APP.SVRCONN", "clientConnection": { "connection": [ { "host": "myhost.cloud.ibm.com", "port": 31605 } ], "queueManager": "MQ_ONE" }, "transmissionSecurity": { "cipherSpecification": "ANY_TLS12_OR_HIGHER" }, "type": "clientConnection" } ] }
以下部分描述了如何检查通道是否已配置 TLS ,以及是否未配置这些通道以应用 TLS 安全性。
使用 MQ 控制台更改通道
-
导航至队列管理器的管理选项卡。
-
确保选择了“MQ 控制台”,然后单击启动 MQ 控制台。
-
单击侧边菜单中的 "管理" 以查看 MQ 对象
-
单击“通信”,然后单击“应用程序通道”。
-
在表中,单击 CLOUD.ADMIN.SVRCONN 的 3 点图标,然后选择“配置”。
-
选择 编辑 按钮
-
选择 "SSL" ,然后在 SSL CipherSpec 字段中,检查值是否为
ANY_TLS12_OR_HIGHER
。 这不是列表,因此如果要选择其他密码规范,请参阅 IBM MQ 文档以了解 启用 CipherSpec -
单击保存。
-
对 CLOUD.APP.SVRCONN 通道重复上述步骤。
-
现在,如果您已变更以上任何通道,请刷新队列管理器 SSL 安全性:
- 在队列管理器页面上,选择 配置。
- 选择安全选项卡。
- 选择三个点,然后 刷新 SSL
- 通过单击刷新进行确认
- 在队列管理器页面上,选择 配置。
现已完成密码规范配置。
使用 MQ Explorer 更改通道
-
请参阅使用 MQ Explorer 连接到队列管理器,并执行将 MQ Explorer 连接到 MQ on Cloud 队列管理器的步骤。
-
在“MQ Explorer - 导航器”中:
- 浏览至 队列管理器,展开队列管理器,然后单击 通道。
- 在 " 通道 " 面板中,双击 CLOUD。ADMIN.SVRCONN。
- 在 CLOUD 中。ADMIN.SVRCONN 属性面板,选择 SSL。
- 在 SSL 密码规范: 字段中,确保选择了密码规范 (
ANY_TLS12_OR_HIGHER
)。 - 单击 应用 ,然后单击 确定。
-
对 CLOUD.APP.SVRCONN 通道重复上述步骤。
-
如果已更改任何通道的密码规范,请刷新安全性。 在队列管理器下,右键单击队列管理器,然后选择安全性 -> 刷新 SSL。
-
这样就完成了在 MQ 通道上启用 TLS 加密的操作。 如果不再需要 MQ Explorer,可以通过右键单击队列管理器并选择断开连接来断开与队列管理器的连接。
使用 runmqsc 变更通道
-
请参阅使用 runmqsc 连接到队列管理器,并执行连接到 MQ on Cloud 队列管理器的步骤。 不要退出 runmqsc 命令 shell,因为在下面的步骤中要使用。
-
如果队列管理器为 9.2.1 r1 或更低版本,请运行以下命令来配置通道:
ALTER CHANNEL(CLOUD.ADMIN.SVRCONN) CHLTYPE(SVRCONN) SSLCAUTH(OPTIONAL) SSLCIPH(ANY_TLS12_OR_HIGHER) ALTER CHANNEL(CLOUD.APP.SVRCONN) CHLTYPE(SVRCONN) SSLCAUTH(OPTIONAL) SSLCIPH(ANY_TLS12_OR_HIGHER) REFRESH SECURITY TYPE(SSL) end
-
这样就完成了在 MQ 通道上启用 TLS 加密的操作。 如果不再需要 runmqsc CLI,现在可以退出。
创建密钥库文件
要使客户机进程能够信任队列管理器,必须下载将由队列管理器提供的公用证书。
下载公用证书
以下步骤可用于下载公用证书并创建该密钥库。
-
单击密钥库选项卡,并识别标记为“使用中:队列管理器”的证书(缺省情况下,此证书为 qmgrcert_yyyymm)。
创建 PKCS12 格式的密钥库文件
创建客户机密钥库,并将队列管理器证书链的公共部分复制到该密钥库。
-
使用 "runmqakm" 工具创建客户机密钥库。
runmqakm -keydb -create -db key.kdb -pw <your password> -type pkcs12 -expire 0 -stash
# In some operating systems you may have to update the file permissions to make the keystore readable chmod +rw key.kdb
-
将队列管理器证书导入到密钥库中 (这是先前从 MQ on Cloud 用户界面下载的 qmgrcert )。
runmqakm -cert -add -db key.kdb -file qmgrcert_yyyymm.pem -label qmgrcert -stashed -type pkcs12 -format ascii
-
请检查是否已添加证书。
runmqakm -cert -list -db key.kdb
上面的类型参数为 pkcs12。 某些样本建议使用 kdb,但密钥工具无法读取由此生成的 key.kdb,因此在本练习中最好使用 pkcs12。
在 Windows 和 Linux 上创建 JKS 格式的密钥库文件
创建 jks 密钥库并将队列管理器证书链的公共部分复制到其中。
-
使用 "ikeycmd" 工具创建客户机密钥库。
ikeycmd -keydb -create -db key.jks -pw <your password> -type jks -expire 0 -stash
# In some operating systems you may have to update the file permissions to make the keystore readable chmod +rw key.jks
-
将队列管理器证书导入到密钥库中 (这是先前从 MQ on Cloud 用户界面下载的 qmgrcert )。
ikeycmd -cert -add -db key.jks -file qmgrcert_yyyymm.pem -label qmgrcert -pw <your password>
-
请检查是否已添加证书。
ikeycmd -cert -list -db key.jks
在 Mac OSX 上创建 JKS 格式的密钥库文件
创建 jks 密钥库并将队列管理器证书链的公共部分复制到其中。
-
创建客户机密钥库并导入证书。
keytool -importcert -file qmgrcert_yyyymm.pem -alias qmgrcert -keystore key.jks -storepass <your password>
-
请检查是否已添加证书。
keytool -list -keystore key.jks -storepass <your password>
后续步骤
确保管理安全
下一步是配置通信的客户机端,使其信任队列管理器证书。 选择想要使用的管理工具,并按照下面相应的指示信息进行操作。
确保应用程序连接安全
下一步是配置应用程序连接,使其在连接到队列管理器时使用 TLS 加密。