在WebSphere应用服务器和WebSphere MQ之间配置SSL

4

我尝试从在WebSphere应用服务器上启动的简单Web服务连接到WMQ。

在WMQ上,我有带有SSL的通道。目前我使用自签名证书。

在glassfish的情况下,我只需将此证书添加到域中的密钥库中,所有事情都能正常工作(当然,我配置了我的MQQueueConnectionFactory)。

但是在WebSphere上,这个技巧行不通:

[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O %% Invalidated:  [Session-94, SSL_RSA_EXPORT_WITH_RC4_40_MD5]
[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O jmsContainer-1, SEND SSLv3 ALERT:  fatal, description = certificate_unknown
[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O jmsContainer-1, WRITE: SSLv3 Alert, length = 2
[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O [Raw write]: length = 7
[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O 0000: 15 03 00 00 02 02 2e                               .......

[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O jmsContainer-1, called closeSocket()
[5/13/13 14:00:25:058 FET] 00000060 SystemOut     O jmsContainer-1, handling exception: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: unable to find valid certification path to requested target
[5/13/13 14:00:25:058 FET] 00000060 DefaultMessag E org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful Could not refresh JMS Connection for destination 'fromESB' - retrying in 5000 ms. Cause: JMSWMQ0018: Failed to connect to queue manager 'qm1' with connection mode 'Client' and host name '192.168.56.101(1414)'.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2397' ('MQRC_JSSE_ERROR').

我该如何配置WebSphere应用服务器以使用SSL(如何将服务器(WMQ)证书添加到信任存储区?或信任存储区在哪里?)?
1个回答

3

好的,我自己解决了。

配置WMQ:

  1. 创建密钥库

    runmqckm -keydb -create -db "c:\dev\sslqm001\sslqm001.kdb" -pw serverpass -type cms -expire 365 -stash

  2. 创建证书并将其添加到密钥库中

    runmqckm -cert -create -db "c:\dev\sslqm001\sslqm001.kdb" -pw serverpass -label ibmwebspheremqssl_qm001 -dn "CN=SSL_QM001,OU=IT,O=SomeCompany,L=Minsk,ST=Belarus,C= BY" -expire 365

  3. 从密钥库中导出此证书至文件。

    runmqckm -cert -extract -db "c:\dev\sslqm001\sslqm001.kdb" -pw serverpass -label ibmwebspheremqssl_qm001 -target SSL_QM001.crt -format ascii

  4. 在队列管理器设置的“SSL”选项卡中,设置不带 .kdb 后缀的密钥库路径为:

    ALTER QMGR SSLKEYR('c:\dev\sslqm001\sslqm001') ALTER QMGR SSLFIPS(NO)

  5. 创建新的通道

  6. 在通道设置的“SSL”选项卡中,将密钥设置为某个值(对我有用的是 DES_SHA_EXPORT),并将身份验证设置为可选

    DEFINE CHANNEL('SSL_CHANNEL') CHLTYPE(SVRCONN) TRPTYPE(TCP) SSLCIPH(DES_SHA_EXPORT) SSLCAUTH(OPTIONAL) REPLACE

  7. 在队列管理器中刷新SSL:

    REFRESH SECURITY TYPE(SSL)

更改您的应用程序上下文:

<bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <property name="hostName" value="${queue_hostname}"/>
    <property name="port" value="${queue_port}"/>
    <property name="queueManager" value="${queue_manager}"/>
    <property name="transportType" value="1"/>
    <property name="SSLCipherSuite" value="SSL_RSA_EXPORT_WITH_RC4_40_MD5"/>
    <property name="channel" value="ssl_channel"/>
</bean>

在 WAS 上设置 SSL

  1. 前往:

    Security → SSL 证书和密钥管理 → SSL 配置 → NodeDefaultSSLSettings → 密钥库和证书 → NameOfStore → 签名者证书

  2. 添加您在 第三步 中导出的证书


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接