在 WebSphere MQ File Transfer Edition 中配置 SSL 连接性

WebSphere MQ File Transfer Edition (FTE) 提供了一个可靠的、可审计的、托管的文件传输解决方案,用于在多个 IT 系统之间移动任意大小的文件,并且移动过程不涉及编程。本文描述了一个包含三个队列的管理器场景,介绍如何使用 WebSphere MQ FTE 设置 Secure Sockets Layer (SSL)。

简介

本文将向您展示如何从一个 IBM® WebSphere® MQ File Transfer Edition (WMQFTE) 代理配置 Secure Sockets Layer (SSL) 连接。本文还将解释 WMQFTE 命令和 WMQFTE Plug-in for MQ Explorer,以及如何通过 TCP/IP 连接到三个独立的 WebSphere MQ 队列管理器:Agent 队列管理器、Command 队列管理器和 Coordination 队列管理器。本文还将向您展示如何通过 MQ FTE 创建测试证书并配置队列管理器,从而创建一个安全的服务器连接通道(SVRCONN)。但本文将不涉及这三个队列管理器之间的 SSL 队列间管理器。

本文的场景使用 WMQFTE V7.0.2 和 WebSphere MQ V7.0.1 在 Microsoft® Windows® 上创建。您应该拥有足够的 WebSphere MQ 经验,以便使用 WMQFTE 配置一个不包含 SSL 的含有三个队列管理器的网络,并将这个网络作为您的出发点。尽管本文没有介绍如何进行这种配置,但您可以通过使用您的单一队列管理器替代对 Command、Coordination 和 Agent 队列管理器的任何引用来将这个场景调整为一个单队列管理器配置,从而在一个队列管理器中提供所有三个队列管理器的全部功能。本文还将在必要时提供图形 IBM Key Management 工具/MQ Explorer 和命令行示例的屏幕截图。

队列管理器和 WMQFTE 组件之间的交互

WMQFTE 的 SSL 配置是通过配置属性执行的,这些配置属性位于 WMQFTE 配置目录结构中的以下一种或多种属性文件中: agent.properties、command.properties 和 coordination.properties。WMQFTE 中的任意场景的 SSL 配置依赖您正在连接的底层队列管理器。在很多情况下,您可能拥有这样一个场景:您的代理只需通过 SSL 连接到它们的 Agent 队列管理器;但其他场景可能更复杂,比如需要与 Coordination 队列管理器建立 SSL 连接。要配置您的 WQFTE 拓扑以满足您的业务需求,您需要理解每条 WMQFTE 命令、WMQFTE Plug-in for MQ Explorer 和 Agents 之间的队列管理器迭代。

对于 WMQFTE 和队列管理器之间的这些交互,有一些常见的误解。例如,有些用户认为,fteListAgents 命令需要连接到 Command 队列管理器才能执行其操作。但这条命令的功能是检索您的 WMQFTE 网络中的代理信息,由于代理信息通常存储在 Coordination 队列管理器上,因此该命令只需连接到 Coordination 队列管理器。因此,如果需要这个命令来通过 SSL 执行连接,则必须使用 coordination.properties 文件进行 SSL 配置。但是,其他命令(比如 fteCreateTransfer)的确直接连接到 Command 队列管理器。表 1 展示了几条 WMQFTE 命令、MQ Explorer WMQFTE Plug-in 和几个代理之间的队列管理器连接。要详细了解这个主题,请参见 WMQFTE 信息中心中的 Which WebSphere MQ FTE commands connect to which queue manager

表 1. WMQFTE 实体和队列管理器类型之间的连接
WMQFTE 实体Agent 队列管理器Command 队列管理器Coordination 队列管理器
fteCreateTransferX
fteStartAgent(Agent 本身)X
fteStopAgentX
fteListAgentsX
WebSphere MQ File Transfer Edition Plug-in for WebSphere MQ ExplorerXX

每当引用一个队列管理器类型时,您必须在对应的 WMQFTE 属性文件中配置 SSL,以便相关类型的 WMQFTE 实体能够连接到它的队列管理器。作为上表的一个示例,MQ Explorer WMQFTE Plug-in 需要同时迭代 Coordination 队列管理器和 Command 队列管理器才能运行,因为这个插件将命令提交到 Command 队列管理器(创建传输)并从 Coordination 队列管理器请求信息(传输进度)。如果 Coordination 队列管理器和 Command 队列管理器都需要使用支持 SSL 的连接配置,那么 commands.properties 和 coordination.properties 文件中都需要 WMQFTE SSL 配置信息,以便允许这个插件运行。

如果您的整个拓扑都需要 SSL,您完全可以在所有队列管理器上启用 SSL 并将 SSL 配置信息放到所有 WMQFTE 属性文件中。为了简便起见,示例场景将用这种方式配置。

WMQFTE SSL 示例

如前所述,这个示例将向您展示如何为三个队列管理器 —— AgentQmgr、CommandQmgr 和 CoordinationQmgr —— 以及 WMQFTE 代理 AGENT1 配置 SSL,配置过程将用到自签名证书。

  1. 创建客户端信任存储(truststore),用于这个代理、WMQFTE 命令和 MQ Explorer Plug-in。
  2. 创建队列管理器证书存储
  3. 创建队列管理器自签名证书
  4. 将证书添加到客户端信任存储
  5. 配置 WMQFTE 属性文件
  6. 配置队列管理器
  7. 创建并配置客户端密匙存储,用于客户端验证(可选)。
  8. 测试配置

除步骤 7 之外,其他所有步骤都是配置基本的 SSL 连接所必需的。只有在需要配置客户端验证时才需执行步骤 7。为降低复杂性并简化调试,您不应该在一开始就使用客户端验证。当您配置好一个基本 SSL 连接并且该连接能够正常工作后,您可以添加客户端验证。您可以测试以下 4 个 WMQFTE 实体是否能够连接到相应的队列管理器:

  • WMQFTE Plug-in for MQ Explorer
  • 测试代理 AGENT1
  • WMQFTE 命令 fteCreateTransfer 和 fteListAgents

创建客户端信任存储

信任存储为您信任的一个队列管理器持有证书签署机构(CA)签发的证书。用 WMQFTE 的专业术语来讲,这意味着当一个连接试图连接一个队列管理器时,该连接将其证书发送到 WMQFTE,作为初始 SSL 握手的一部分。Java Secure Socket Extension (JSSE) 负责处理所有 SSL 通信,它检查信任存储,验证其刚刚收到的证书。如果它不能验证该证书,则连接终止。要创建一个信任存储,可以使用 IBM Key Management 工具,该工具是 WebSphere MQ V7 的一部分。您也可以使用与 WMQFTE Java 安装一起打包的 keytool 程序。

  • 在 “start” 栏中,选择 Programs => IBM WebSphere MQ => IBM Key Management
  • IBM Key Management 启动后,单击 New 并设置以下值,如图 1 所示。
    • Key database type:JKS
    • File name:truststore.jks
    • Location:C:\WMQFTE_SSL\
  • 单击 OK 继续。
  • 系统提示输入密码。仅当您要向信任存储添加证书时,您需要这个密码来打开信任存储。如果只是用作一个信任存储的话,JSEE 不需要密码。对于这个示例,请您输入密码。
  • 单击 OK 继续。现在您应该有了一个信任存储,您可以将信任的 CA 的证书导入其中。

在命令行上,您可以输入 runmqckm(对于 Windows)或 gsk7cmd(对于 Unix)来实现相同的效果,如清单 1 所示。

清单 1. 创建一个信任存储
runmqckm -keydb -create -db C:\WMQFTE_SSL\truststore.jks -pw password 
-type jks
图 1. 创建一个信任存储
创建一个信任存储

创建队列管理器证书存储

在一个非客户端验证场景中,队列管理器证书存储和密匙存储的作用相同,原因是它拥有客户端的个人证书。配置附加的客户端验证时,队列管理器证书存储充当信任存储以及密匙存储。由于这个场景中使用的是自签名证书,我们的个人证书和 CA 是相同的内容,因此,我们的队列管理器证书存储可以同时充当密匙存储和信任存储。

key.kdb 文件

您可以任意命名队列管理器证书存储 kdb 文件,只要其扩展名为 .kdb。队列管理器使用的默认名称为 key.kdb,因此您必须更新队列管理器的 SSLKEYR 属性(使用 runmqsc 或 MQ Explorer)来反映您选择的值。

在这个含三个队列管理器的场景中,您需要为每个队列管理器创建一个队列管理器证书存储。与上一步一样,可以使用 IBM Key Management 工具来创建一个证书存储:

  • 打开 IBM Key Management 工具。
  • 单击 New 并设置以下值,如图 2 所示。
    • Key database type:CMS
    • File name:key.kdb
    • Location:C:\Program Files\IBM\WebSphere MQ\Qmgrs\AgentQmgr\ssl\
  • 单击 OK 继续。
  • 系统提示输入密码。输入密码并选择 Stash the password to a file
  • 单击 OK 继续。您现在应该拥有了三个队列管理器证书存储中的第一个。
  • 对 CommandQmgr 和 CoordinationQmgr 重复上述步骤,为三个队列管理器创建证书存储。

在命令行上,您可以输入 runmqckm(对于 Windows)或 gsk7cmd(对于 Unix)来实现相同的效果,如清单 2 所示。

清单 2. 创建队列管理器密匙存储
runmqckm -keydb -create -db C:\Progra~1\IBM\Websph~1\qmgrs\AgentQmgr\ssl\key.kdb 
-pw password -type cms -expire 365 -stash
图 2. 创建一个队列管理器证书存储
创建一个队列管理器证书存储

创建队列管理器自签名证书

自签名证书的密匙标签值

这个值的形式必须为 <ibmwebspheremq<qmname lowercase>>,因此在本例中,这个值可能为以下之一:

  • ibmwebspheremqagentqmgr
  • ibmwebspheremqcommandqmgr
  • ibmwebspheremqcoordination

创建三个自签名证书,每个队列管理器各一个。为简化操作,最好在与证书相关的队列管理器证书存储中创建每个自签名证书。同样,您可以使用 IBM Key Management 工具:

  • 打开 IBM Key Management 工具。
  • 单击 Open 打开 AgentQmgr 证书存储。
  • 单击 Create=>New Self-Signed Certificate 并设置以下值,如图 3 所示。
    • Key label:ibmwebspheremqagentqmgr
    • Common Name:<所有者姓名或机器名称>(选择一个适当的值)
  • 单击 OK 继续。
  • 现在您应该拥有一个列示为 * ibmwebspheremqagentqmgr 的个人证书。单击 Extract certificate 以将这个自签名证书提取到一个文件,以便稍后将其导入 WMQFTE 客户端信任存储中。设置以下值,如图 4 所示。
    • Data type:Binary DER data
    • Certificate file name:AgentQmgr.der
    • Location:C:\WMQFTE_SSL\
  • 单击 OK 继续。您现在应该拥有了三个自签名证书中的第一个。
  • 对 CommandQmgr 和 CoordinationQmgr 重复以上步骤,创建所有的三个自签名证书。

创建证书存储和自签名证书的快捷方式

为节约时间,可以先创建一个队列管理器证书存储,在此证书存储中创建所有证书,然后将您的队列管理器的 ssl 文件夹中的所有文件复制到其余队列管理器的 ssl 文件夹,从而为每个队列管理器使用相同的存储。从技术角度讲,这样做是可行的。这样做的缺点是您的自签名证书将位于您的队列管理器证书存储中,且所有证书存储都将使用相同的密码,但对于测试和展示目的,这并不是很重要。

在命令行上,您可以输入 runmqckm(对于 Windows)或 gsk7cmd(对于 Unix)来实现相同的效果,如清单 3 所示。

清单 3. 创建并提取自签名证书
runmqckm -cert -create -db C:\Progra~1\IBM\Websph~1\qmgrs\AgentQmgr\ssl\key.kdb 
-pw password -label ibmwebspheremqagentqmgr -dn CN=FTEUser -size 1024 
-x509version 3 -expire 365

runmqckm -cert -extract -db C:\Progra~1\IBM\Websph~1\qmgrs\AgentQmgr\ssl\key.kdb 
-pw password -label ibmwebspheremqagentqmgr -target C:\WMQFTE_SSL\AgentQmgr.der 
-format binary
图 3. 创建一个自签名证书
创建一个自签名证书
图 4. 提取一个自签名证书
提取一个自签名证书

将证书添加到客户端信任存储

现在您已经提取了三个自签名证书(AgentQmgr.der、CommandQmgr.der 和 CoordinationQmgr.der),您需要将它们添加到 WMQFTE 客户端信任存储。尽管没有设置客户端验证,但添加到信任存储的自签名证书将充当 CA。同样,您可以使用 IBM Key Management 工具来完成这个任务:

  • 打开 IBM Key Management 工具。
  • 单击 Open 并打开 WMQFTE 客户端信任存储 C:\WMQFTE_SSL\truststore.jks。收到提示时,输入您此前输入的密码。
  • 选择 Key database content 标签下的下拉列表框。
  • 选择 Signer Certificates
  • 单击 Add。您将被提示输入要添加的证书的地址。这个证书可以是队列管理器证书(如果您正在使用自签名证书进行测试),也可以是签发您的队列管理器证书的 CA 的证书。本例使用自签名证书。输入以下数据,如图 5 所示。
    • Data type:Binary DER data
    • Certificate file name:AgentQmgr.der
    • Location:C:\WMQFTE_SSL\
  • 单击 OK。您将被提示输入一个标签,输入 ibmwebspheremqagentqmgr。
  • 单击 OK 添加证书。
  • 对 CommandQmgr 和 CoordinationQmgr 重复上述步骤,添加所有三个自签名证书。

在命令行上,您可以输入 runmqckm(对于 Windows)或 gsk7cmd(对于 Unix)来实现相同的效果,如清单 4 所示。

清单 4. 添加一个自签名证书到 WMQFTE 信任存储
runmqckm -cert -add -db C:\WMQFTE_SSL\truststore.jks -pw password -type jks 
-label ibmwebspheremqagentqmgr -file C:\WMQFTE_SSL\AgentQmgr.der -format binary 
-trust enable
图 5. 添加一个自签名证书到 WMQFTE 信任存储
添加一个自签名证书到 WMQFTE 信任存储

配置 WMQFTE 属性文件

由于您可能会使用一个可用 WMQFTE 实体来验证 WMQFTE SSL 配置,请参考 表 1,您会看到,所有这三个队列管理器类型都直接连接到这些实体。因此,您必须将 SSL 配置信息添加到所有这三个属性文件:

要使对这些属性文件的更改对 WMQFTE 实体生效,必须重新启动这些实体。但是,在这个阶段,您的基本配置还没有完成,因此启动可能会由于 SSL 配置问题而失败。

配置 agent.properties 文件

agent.properties 文件位于您的 agent data 根目录,用于配置代理行为的所有特征。要在这个场景中启用 SSL,添加或修改以下值:

  • agentQMgrChannel=SYSTEM.SSL.SVRCONN
  • agentSslCipherSpec=RC4_MD5_EXPORT
  • agentSslTrustStore=C:\\WMQFTE_SSL\\truststore.jks
  • agentSslTrustStorePassword= 您在前面的 创建客户端信任存储 小节中选择的密码。

比较 agentSslCipherSuite 和 agentSslCipherSpec 及其他代理 SSL 属性

本例使用 agentSslCipherSpec 属性。为了与其他 MQ Java Clients 保持一致,也可以使用 agentSslCipherSuite 属性。通常,指定 CipherSpec 更容易,因为您只需匹配在您的 MQ Server Connection 通道上设置的值。如果您想指定 CipherSuite 而不是 CipherSpec,请参见 Websphere MQ Java/JMS 客户端的 SSL 配置 一文的第 4 小节的表。如果 agent.properties 文件中同时指定了这两种类型,那么 agentSslCipherSpec 比 agentSslCipherSuite 具有优先权。对于 WMQFTE V7.0.2,Agent 可用的其他 SSL 配置属性如下:

至于可用于 WMQFTE 的最新 SSL 属性,请参见 WMQFTE 信息中心

对于 agent.properties 文件,可以使用 RC4_MD5_EXPORT 作为 SSL Cipher Suite,但也可以使用任意支持的值,只要它匹配在您的 Agent 队列管理器上的对应 Server Connection 通道上选择的值。

配置 coordination.properties 文件

coordination.properties 文件位于 data 根目录下的 Coordination queue manager 目录中。要在这个场景中启用 SSL,添加或修改以下值:

  • coordinationQMgrChannel=SYSTEM.SSL.SVRCONN
  • coordinationSslCipherSpec=DES_SHA_EXPORT
  • coordinationSslTrustStore=C:\\WMQFTE_SSL\\truststore.jks
  • coordinationSslTrustStorePassword= 您在前面的 创建客户端信任存储 小节中选择的密码。

对于 coordination.properties 文件,您可以使用 DES_SHA_EXPORT 作为 SSL Cipher Suite;与 agent.properties 文件一样,您可以使用任意支持的值,只要它匹配在您的 Coordination 队列管理器上的对应 Server Connection 通道上选择的值。

在属性文件中使用纯文本密码的安全考虑

信任存储和密匙存储的密码以纯文本格式存储在这三个 WMQFTE 属性文件中。您需要使用操作系统上的可用方法来限制可以阅读这些文件的人员。这些密码在 Agent 的输出日志文件中和 WMQFTE 跟踪文件中进行了模糊处理。

配置 command.properties 文件

command.properties 文件位于 data 根目录的 Coordination queue manager 目录中。要在这个场景中启用 SSL,添加或修改以下值:

  • connectionQMgrChannel=SYSTEM.SSL.SVRCONN
  • connectionSslCipherSpec=TRIPLE_DES_SHA_US
  • connectionSslTrustStore=C:\\WMQFTE_SSL\\truststore.jks
  • connectionSslTrustStorePassword= 您在前面的 创建客户端信任存储 小节中选择的密码。

对于 command.properties 文件,您可以使用 TRIPLE_DES_SHA_US 作为 SSL Cipher Suite;与前面的属性文件一样,您可以使用任何支持的值,只要它匹配在您的 Command 队列管理器上的对应 Server Connection 通道上选择的值。

配置队列管理器

这个示例中的队列管理器配置工作非常少。它对三个队列管理器中的每一个使用一个新的 Server Connection 通道 SYTEM.SSL.SVRCONN,您可以通过 MQ Explorer 或 runmqsc 创建:

图 6. 定义您的 SSL Server Connection
定义您的 SSL Server Connection
清单 5. 在 runmqsc 中定义 AgentQmgr SVRCONN Channel
C:\WMQFTE_SSL>runmqsc AgentQmgr
5724-H72 (C) Copyright IBM Corp. 1994, 2009.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager AgentQmgr.

DEFINE CHANNEL(SYSTEM.SSL.SVRCONN) CHLTYPE(SVRCONN) SSLCIPH(RC4_MD5_EXPORT) 
SSLCAUTH(OPTIONAL)
    2 : DEFINE CHANNEL(SYSTEM.SSL.SVRCONN) CHLTYPE(SVRCONN) SSLCIPH(RC4_MD5_EXPORT)
SSLCAUTH(OPTIONAL)
AMQ8014: WebSphere MQ channel created.
DISPLAY CHANNEL(SYSTEM.SSL.SVRCONN)
    3 : DISPLAY CHANNEL(SYSTEM.SSL.SVRCONN)
AMQ8414: Display Channel details.
CHANNEL(SYSTEM.SSL.SVRCONN)             CHLTYPE(SVRCONN)
ALTDATE(2009-11-19)                     ALTTIME(13.01.25)
COMPHDR(NONE)                           COMPMSG(NONE)
DESCR( )                                HBINT(300)
KAINT(AUTO)                             MAXINST(999999999)
MAXINSTC(999999999)                     MAXMSGL(4194304)
MCAUSER( )                              MONCHL(QMGR)
RCVDATA( )                              RCVEXIT( )
SCYDATA( )                              SCYEXIT( )
SENDDATA( )                             SENDEXIT( )
SHARECNV(10)                            SSLCAUTH(OPTIONAL)
SSLCIPH(RC4_MD5_EXPORT)                 SSLPEER( )
TRPTYPE(TCP)

对 CommandQmgr 使用 SSLCIPH(TRIPLE_DES_SHA_US) 并对 CoordinationQmgr 使用 SSLCIPH(DES_SHA_EXPORT),重复配置过程。现在,您的每个队列管理器上都应该拥有一个启用了 SSL 的 Server Connection 通道。

创建并配置客户端密匙存储(可选)

只有在需要对队列管理器连接进行客户端验证时才需执行这个步骤。如果客户端验证没有在通道上指定,则不必完成这个小节:

定义客户端密匙存储

这个场景使用自签名证书,从这个意义上说,您也可以只使用现有的信任存储作为客户端验证的密匙存储,原因是证书同时充当个人证书和 CA。此前不需要设置的密码现在需要传递到 JSSE,以便它访问您的个人证书,这也是前面指定密码的原因。

在属性文件中设置密匙存储和密码

agent.property 文件更新:

  • agentSslKeyStore=C:\\WMQFTE_SSL\\truststore.jks
  • agentSslKeyStorePassword= 您在前面的 创建客户端信任存储 小节中选择的密码。

coordination.property 文件更新:

  • coordinationSslKeyStore=C:\\WMQFTE_SSL\\truststore.jks
  • coordinationSslKeyStorePassword= 您在前面的 创建客户端信任存储 小节中选择的密码。

command.property file 更新:

  • connectionSslKeyStore=C:\\WMQFTE_SSL\\truststore.jks
  • connectionSslKeyStorePassword= 您在前面的 创建客户端信任存储 小节中选择的密码。

更改队列管理器通道以使用 CA

与原始队列管理器配置一样,使用 MQ Explorer(图 7)或 runmqsc(清单 6)来更改此前在所有三个队列管理器上创建的服务器连接通道:

图 7. 更改 SSL Server Connection 以要求使用 Client Authentication
更改 SSL Server Connection 以要求使用 Client Authentication
清单 6. 在 runmqsc 中更改 AgentQmgr SVRCONN Channel
C:\WMQFTE_SSL>runmqsc AgentQmgr
5724-H72 (C) Copyright IBM Corp. 1994, 2009.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager AgentQmgr.

ALTER CHANNEL(SYSTEM.SSL.SVRCONN) CHLTYPE(SVRCONN) SSLCAUTH(REQUIRED)
     1 : ALTER CHANNEL(SYSTEM.SSL.SVRCONN) CHLTYPE(SVRCONN) SSLCAUTH(REQUIRED)
AMQ8016: WebSphere MQ channel changed.
DISPLAY CHANNEL(SYSTEM.SSL.SVRCONN)
     2 : DISPLAY CHANNEL(SYSTEM.SSL.SVRCONN)
AMQ8414: Display Channel details.
   CHANNEL(SYSTEM.SSL.SVRCONN)             CHLTYPE(SVRCONN)
   ALTDATE(2009-11-19)                     ALTTIME(14.02.49)
   COMPHDR(NONE)                           COMPMSG(NONE)
   DESCR( )                                HBINT(300)
   KAINT(AUTO)                             MAXINST(999999999)
   MAXINSTC(999999999)                     MAXMSGL(4194304)
   MCAUSER( )                              MONCHL(QMGR)
   RCVDATA( )                              RCVEXIT( )
   SCYDATA( )                              SCYEXIT( )
   SENDDATA( )                             SENDEXIT( )
   SHARECNV(10)                            SSLCAUTH(REQUIRED)
   SSLCIPH(RC4_MD5_EXPORT)                 SSLPEER( )
   TRPTYPE(TCP)

测试配置

至此,您应该拥有三个队列管理器,每个队列管理器上都具有支持 SSL 的服务器连接通道,所有的队列管理器都拥有一个自签名证书。作为一个可选项,您也可能已经启用了 CA。WMQFTE 应该配置为允许连接到这些支持 SSL 的新通道。如果启动带有 WMQFTE Plug-in 的 MQ Explorer、配置了 SSL 的代理 AGENT1 或者任一 WMQFTE 命令,它们将通过支持 SSL 的通道连接到对应的队列管理器,如 表 1. WMQFTE 实体和队列管理器类型之间的连接 所示。尝试执行以下每个实体:

  • fteStartAgent AGENT1 —— 检查 output0.log,了解是否成功初始化并连接到您的代理。
  • fteListAgent —— Stdout 应该显示您的 WMQFTE 网络上的 Agent AGENT1。
  • fteFteCreateTransfer -sa AGENT1 -da AGENT1 -df C:\MyDestinationFile -w C:\MySourceFile —— 应该报告文件传输已经成功完成,且目标文件应该存在。
  • 通过 WMQFTE Plug-in for MQ Explorer 连接到 CoordinationQmgr —— MQ Explorer GUI 中的 WMQFTE 节点应该连接到 CoordinationQmgr。

如果一切进展顺利,您应该看到,上述执行过程应该与未设置 SSL 的场景没有什么不同。

最好的测试是失败测试

当然,如果连接测试顺利,这只说明您能够在一个非 SSL 通道上连接到您的队列管理器,且您没有执行任意 WMQFTE 端配置。检查是否配置 SSL 的一个简单方法是故意使您的 WMQFTE 和队列管理器通道 Cipher Suites 不匹配。使用这种错误配置后,启动您的代理应该导致到队列管理器的连接失败,错误代码为 MQRC 2397 - MQRC_JSSE_ERROR。重新匹配 Cipher Suites,代理应该能够正常启动。这三种队列管理器的失败连接的输出示例如下所示:

清单 7. 失败代理输出(连接到 AgentQmgr 队列管理器)
BFGAG0115I: Relative path transfer root directory: C:\Documents and Settings\Laurence
BFGAG0058I: The agent has successfully initialized.
BFGAG0052E: The agent received MQI reason code 2397 when establishing a client transport
    mode connection to the queue manager 'AgentQmgr' on host 'localhost', port '5050' and
    using channel 'SYSTEM.SSL.SVRCONN'.  The agent cannot continue and will end.
BFGAG0061E: The agent ended abnormally
清单 8. 失败的 fteListAgent 输出(连接到 CommandQmgr 队列管理器)
C:\Program Files\IBM\WMQFTE\bin>fteListAgents 
5655-U80, 5724-R10 Copyright IBM Corp.  2008, 2009.  ALL RIGHTS RESERVED
BFGCL0002E: A messaging problem prevented the command from completing successfully.
The WebSphere MQ completion code was 2, and the reason code was 2397.  
A connection could not be established to queue manager CoordinationQmgr, 
on host 'localhost' using port 5052 and channel SYSTEM.SSL.SVRCONN.
清单 9. 失败的 fteCreateTransfer 输出(连接到 CoordinationQmgr 队列管理器)
C:\Program Files\IBM\WMQFTE\bin>fteCreateTransfer -sa AGENT1 -da AGENT1 -df 
C:\MyDestinationFile -w C:\MySourceFile 
5655-U80, 5724-R10 Copyright IBM Corp. 2008, 2009.  ALL RIGHTS RESERVED 
com.ibm.wmqfte.api.TransportException: BFGCL0002E: A messaging problem prevented
the command from completing successfully. The WebSphere MQ completion code was 2, 
and the reason code was 2397.  A connection could not be established to queue manager 
CommandQmgr, on host 'localhost' using port 5051 and channel SYSTEM.SSL.SVRCONN.

结束语

本文介绍如何使用 WMQFTE 配置一个支持 SSL 的包含三个队列管理器的场景,这个场景涉及代理、命令和 WMQFTE Plug-in for MQ Explorer。本文还阐述了支持 SSL 的 WMQFTE 实体的基本 MQ 配置,以及可选的客户端验证。

故障诊断与排除

SSL 调试问题很棘手。出现意外的验证错误时,首先应检查以下两个位置:

  • Agents Output0.log 文件 —— 寻找您希望发生的动作的有关信息。
  • 队列管理器错误日志 —— 寻找关于失败连接的详细信息。

配置问题通常是问题的根源,因此反复检查您的客户端和服务器配置是否匹配能够消除大量问题。构建复杂场景时,应逐步开发并随时检查。如果您想一步到位地从头开始构建具有证书撤销列表、客户端验证等功能的复杂场景,您可能会遇到多个难以隔离和解决的配置问题。

参考资料

学习

获得产品和技术

讨论

  • WebSphere 论坛
    特定于产品的论坛,可以在此获得技术问题的答案,并与其他 WebSphere 用户分享您的专业经验。
  • WebSphere 相关活动
    世界各地针对 WebSphere 开发人员的会议、商贸展览、网络广播和其他活动。
  • developerWorks 博客
    加入 developerWorks 用户和作者、IBM 编辑和开发人员的谈话。
  • developerWorks 播客
    收听新颖有趣的软件创新者访谈和讨论。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=478131
ArticleTitle=在 WebSphere MQ File Transfer Edition 中配置 SSL 连接性
publish-date=03292010