队列管理器证书管理
使用 IBM MQ on Cloud 时,保护流经队列管理器的数据很重要。 公用证书和专用密钥可用于通过传输层安全性 (TLS) 和 Advanced Message Security (AMS) 加密传输中的数据和静态数据。 IBM MQ on Cloud 在创建时为队列管理器提供缺省证书和专用密钥对。 证书和专用密钥对可用于认证队列管理器,以连接 MQ 客户机以及加密/解密数据。 IBM MQ on Cloud 服务使管理员能够使用自己的客户生成的证书并在队列管理器中管理其使用。 本文档涵盖了服务如何管理提供的证书,管理员管理到期证书时需要执行的步骤,以及如何导入您的客户生成的证书。
IBM 证书管理策略
创建队列管理器时,系统会将缺省证书链添加到该队列管理器的密钥库和信任库。 密钥库包含队列管理器使用的证书,信任库包含为队列管理器证书签名的中间证书和根 CA 证书。 缺省证书已配置,可用于队列管理器、MQ 控制台和 REST API。 只有队列管理器证书可被替换。
在服务中,通过选择队列管理器并单击Key store
选项卡,可以查看证书。 下图显示了密钥库中的证书,图标(未使用时是灰色的)从左到右分别表示:
- 队列管理器缺省证书(在配置中未选择明确的证书时使用)
- 在 TLS 通道配置中使用
- 在 AMS 通道配置中使用
- 由 MQ 控制台和 REST API 使用
缺省证书的有效期为 90 天。 在即将到期时,服务会调用以下过程:
- 在到期前大约提前 30 天,将新的证书添加到队列管理器密钥库
- 缺省情况下,尚未配置为启用 TLS 的队列管理器将使用新证书
- 配置为使用 TLS 的队列管理器将继续使用旧证书,新证书也可供使用
- 现有队列管理器的 MQ 控制台和 REST API 将继续使用旧证书
- 新队列管理器的 MQ 控制台和 REST API 将使用新证书
- 在到期前大约提前 14 天,新证书成为缺省证书
- 配置为使用 TLS 或 AMS 的队列管理器的缺省证书会替换为新证书(在刷新安全配置时,MQ 客户机会在短时间内断开连接)
- MQ 控制台和 REST API 将使用新证书
- 从队列管理器密钥库中除去旧证书
已配置为使用客户生成的证书的队列管理器不受上述过程的影响。 客户生成的证书到期由队列管理器管理员负责
证书最初的有效期为 1 年。 这已经减少到 90 天
处理证书到期
当 IBM 提供的证书接近到期时, IBM MQ on Cloud 服务将在服务控制台用户界面中提供通知。 如果您希望配置通过其他渠道(例如,Slack 或 PagerDuty)获取证书到期通知,请使用 IBM Cloud Certificate Manager 服务。
在到期前 30 天和 14 天内,队列管理器列表视图和队列管理器详细信息页面中将显示日益严重的警告。 在此期间,启用了 TLS 和 AMS 的 MQ 客户机以及连接的队列管理器将需要更新其信任库以包含新的证书。 要从服务下载新证书,请执行以下步骤:
- 打开所需队列管理器的
Key store
选项卡 - 选择新证书上的
...
图标 - 单击
Download public certificate
按钮以下载 PEM 文件 - 将证书导入到 MQ 客户机信任库
将证书导入到其他队列管理器信任库的示例
# First convert the PEM file to pkcs12
# Choose a password when prompted
openssl pkcs12 -export -out qmgrcert_YYYYMM.pfx -in qmgrcert_YYYYMM.pem -nokeys
# Import the certificate into the queue manager trust store
runmqckm -cert -import -file qmgrcert_YYYYMM.pem -type pkcs12 -target /var/mqm/qmgrs/<QM>/ssl/key.kdb -target_pw <password> -target_type cms -label <label>
将证书导入到 Java 客户机信任库的示例
# First convert the PEM file to DER
openssl x509 -outform der -in qmgrcert_YYYYMM.pem -out qmgrcert_YYYYMM.der
# Import the certificate into the Java trust store
keytool -import -alias <label> -keystore cacerts -file qmgrcert_YYYYMM.der
更新 MQ 客户机或已连接的队列管理器信任库后,可以将 IBM MQ on Cloud 队列管理器配置为使用新证书。
- 打开所需队列管理器的
Key store
选项卡 - 选择新证书上的
...
图标 - 单击
Manage
按钮 - 选择所需的 TLS 和 AMS 配置
- 现在刷新队列管理器 SSL 安全性:
- 在队列管理器页面上,选择 配置。
- 选择安全选项卡。
- 选择三个点,然后 刷新 SSL
- 通过单击刷新进行确认
- 在队列管理器页面上,选择 配置。
如果使用的是客户生成的证书,那么在当前证书到期之前,需要将新版本导入到队列管理器密钥库。 在更新 IBM MQ on Cloud 队列管理器配置以使用新证书之前,启用了 TLS 和 AMS 的 MQ 客户机和已连接的队列管理器还需要将新证书添加到其信任库。 有关使用客户生成的证书的详细信息,请参阅以下部分。
使用您自己的证书
IBM MQ on Cloud 支持在使用 TLS 连接队列管理器时使用客户生成的证书。 需要将客户生成的证书以 PEM 格式导入到队列管理器密钥库。 公用证书和专用密钥需要包含在同一文件中。
在一些组织中,中央认证中心 (CA) 会为您生成 TLS 签名证书。 在此场景中,CA 公用证书还必须按以下顺序包含在 PEM 文件中:
- 专用密钥
- 客户生成的证书
- 签署者 CA 证书
以下示例会生成自签名客户机证书和专用密钥,并将它们合并到单个 PEM 文件中。
# Generate a new self-signed public certificate and private key
# (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
如果专用密钥已加密,那么您需要先对其进行解码,然后再将其导入
加密的专用密钥类似于以下内容:
*-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC
要将专用密钥解密,请运行以下命令并在系统提示时提供口令。
openssl rsa -in [encrypted.key] -out [decrypted.key]
要将证书导入到队列管理器密钥库,请执行以下操作:
- 在服务中,选择要配置的队列管理器
- 单击
Key store
选项卡 - 单击
Import
按钮 - 单击
Browse Files
,然后选择 PEM 文件 - 单击
Next
- 为证书提供标签,然后单击
Save
- 勾选表明您了解需要刷新安全性的复选框,然后单击
Finish
- 现在刷新队列管理器 SSL 安全性:
- 在队列管理器页面上,选择 配置。
- 选择安全选项卡。
- 选择三个点,然后 刷新 SSL
- 通过单击刷新进行确认
- 在队列管理器页面上,选择 配置。
这样一来,在为队列管理器配置 TLS 和 AMS 时,就可以使用您的证书。
将证书用于 TLS
有关如何将证书用于 TLS 的详细信息,请参阅 本文档
将证书用于 AMS
有关如何将证书用于 AMS 的详细信息,请参阅 本文档