使用 SSL/TLS 保护通道

IBM® MQ 中的 TLS 支持使用队列管理器认证信息对象和各种 MQSC 命令。 您还必须考虑使用数字证书。

数字证书和密钥存储库

最好设置队列管理器证书标签属性 ( CERTLABL ) 到要用于大多数通道的个人证书的名称,并通过在需要不同证书的通道上设置证书标签来覆盖该证书以用于异常。

如果需要许多具有与队列管理器上的缺省证书集不同的证书的通道,那么应考虑在多个队列管理器之间划分这些通道,或者在队列管理器前面使用 MQIPT 代理来提供另一个证书。

您可以对每个通道使用不同的证书,但如果将太多证书存储在密钥存储库中,那么在启动 TLS 通道时可能会影响性能。 尝试将密钥存储库中的证书数保留为小于约 50 ,并将 100 视为最大值,因为 IBM Global Security Kit (GSKit) 性能会随着更大的密钥存储库而急剧下降。

允许在同一队列管理器上使用多个证书会增加在同一队列管理器上使用多个 CA 证书的可能性。 这将增加证书主体专有名称名称名称空间与由单独的认证中心发放的证书发生冲突的几率。

虽然专业认证中心可能更加谨慎,但内部认证中心通常缺乏明确的命名约定,最终可能出现一个 CA 与另一个 CA 之间的意外匹配。

除了主题专有名称外,您还应该检查证书颁发者专有名称。 要执行此操作,请使用通道认证 SSLPEERMAP 记录,并设置 SSLPEERSSLCERTI 字段以分别与主体集 DN 和颁发者 DN 匹配。

自签名证书和 CA 签名证书

在开发和测试应用程序时以及在生产中使用数字证书时,规划数字证书的使用非常重要。 根据队列管理器和客户机应用程序的使用情况,您可以使用 CA 签名的证书或自签名证书。

CA 签名的证书
对于生产系统,请从可信认证中心 (CA) 获取证书。 从外部 CA 获取证书时,将为服务付费。
自签名证书
在开发应用程序时,可以使用本地 CA 颁发的自签名证书或证书,具体取决于平台:

[AIX、Linux 和 Windows]AIX®, Linux®, and Windows 系统上,可以使用自签名证书。 请参阅 在 AIX, Linux和 Windows 上创建自签名个人证书以获取指示信息。

[IBM i]IBM i 系统上,可以使用本地 CA 签署的证书。 请参阅 请求 IBM i上的服务器证书 以获取指示信息。

[z/OS]z/OS®上,可以使用自签名证书或本地 CA 签名证书。 请参阅 在 z/OS上创建自签名个人证书在 z/OS上请求个人证书 以获取指示信息。

自签名证书不适合生产使用,原因如下:
  • 无法撤销自签名证书,这可能允许攻击者在私钥被泄露后破坏身份。 CA 可以撤销已泄密的证书,这将阻止其进一步使用。 因此, CA 签署的证书在生产环境中使用更安全,尽管自签名证书对于测试系统更方便。
  • 自签名证书永不到期。 这在测试环境中既方便又安全,但在生产环境中,这会使它们面临最终的安全漏洞。 自签名证书无法撤销,这一风险雪上加霜。
  • 自签名证书既用作个人证书,也用作根 (或信任锚) CA 证书。 具有自签名个人证书的用户可能能够使用该证书来签署其他个人证书。 一般来说, CA 颁发的个人证书并不是这样,代表着重大的曝光率。

CipherSpecs 和数字证书

只有一部分受支持的 CipherSpecs 可用于所有受支持的数字证书类型。 因此,需要为数字证书选择相应的 CipherSpec 。 同样,如果组织的安全策略要求使用特定的 CipherSpec ,那么必须获取合适的数字证书。

有关 CipherSpecs 与数字证书之间的关系的更多信息,请参阅 IBM MQ 中的数字证书和 CipherSpec 兼容性

证书验证策略

IETF RFC 5280 标准指定了一系列证书验证规则,为了防止假冒攻击,合规的应用软件必须实现这些规则。 一组证书验证规则称为证书验证策略。 有关 IBM MQ中的证书验证策略的更多信息,请参阅 IBM MQ中的证书验证策略

规划证书撤销检查

允许来自不同认证中心的多个证书可能会导致不必要的其他证书撤销检查。

尤其是,如果您已显式配置使用特定 CA 中的撤销服务器 (例如,通过使用 AUTHINFO 对象或认证信息记录 (MQAIR) 结构) ,那么在提供来自其他 CA 的证书时,撤销检查将失败。

您应该避免显式证书撤销服务器配置。 相反,你应启用隐式检查,即每张证书在证书扩展名(如 CRL Distribution Point 或 OCSPAuthorityInfoAccess)中包含自己的吊销服务器位置。

有关更多信息,请参阅 OCSPCheckExtensionsCDPCheckExtensions

TLS 支持的命令和属性

传输层安全性 (TLS) 协议提供通道安全性,防止窃听,篡改和假冒。 IBM MQ 对 TLS 的支持使您能够在通道定义上指定特定通道使用 TLS 安全性。 您还可以指定所需安全性类型的详细信息,例如要使用的加密算法。

  • 以下 MQSC 命令支持 TLS:
    变更授权信息
    修改认证信息对象的属性。
    定义授权信息
    创建认证信息对象。
    删除授权信息
    删除认证信息对象。
    显示授权信息
    显示特定认证信息对象的属性。
  • 以下队列管理器参数支持 TLS:
    CERTLABL
    定义要使用的个人证书标签。
    键盘 RPWD
    AIX, Linux, and Windows 系统上,定义 IBM MQ 用于访问密钥存储库的密码。 此字段使用密码保护系统进行加密。
    SSLCRLNL
    SSLCRLNL 属性指定用于提供证书撤销位置以允许增强 TLS 证书检查的认证信息对象的名称列表。
    SSLCRYP
    AIX, Linux, and Windows 系统上,设置 SSLCryptoHardware 队列管理器属性。 此属性是可用于配置系统上的加密硬件的参数字符串的名称。
    SSLEV
    确定如果使用 TLS 的通道无法建立 TLS 连接,是否报告 TLS 事件消息。
    SSLFIPS
    如果加密在 IBM MQ 而不是加密硬件中进行,则指定是否只使用 FIPS 认证的算法。 如果配置了加密硬件,则使用硬件产品提供的加密模块,这些模块可能已通过 FIPS 认证,达到特定级别。 这取决于正在使用的硬件产品。
    SSLKEYR
    AIX, Linux, and Windows 系统上,将密钥存储库与队列管理器相关联。 GSKit 使您能够在 AIX, Linux, and Windows 系统上使用 TLS 安全性。
    SSLRKEYC
    在重新协商密钥之前要在 TLS 对话中发送和接收的字节数。 此字节数包括由 MCA 发送的控制信息。
  • 以下通道参数支持 TLS:
    CERTLABL
    定义要使用的个人证书标签。
    SSLCAUTH
    定义 IBM MQ 是否需要并验证来自 TLS 客户机的证书。
    SSLCIPH
    指定加密强度和功能 (CipherSpec) ,例如 TLS_RSA_WITH_AES_128_CBC_SHA。 通道两端必须设置兼容的CipherSpecs。
    SSLPEER
    指定允许的合作伙伴的专有名称 (唯一标识)。
本节描述用于支持认证信息对象的 setmqautdspmqautdmpmqautrcrmqobjrcdmqimgdspmqfls 命令。 它还描述了可用于在 AIX, Linux, and Windows上管理密钥和证书的命令。 请参阅下列各部分:
有关使用 TLS 的通道安全性的概述,请参阅
有关与 TLS 关联的 MQSC 命令的详细信息,请参阅
有关与 TLS 关联的 PCF 命令的详细信息,请参阅