我使用IBM的WebSphere MQ 8.0版本。
我有我的配置与安装,并映射到密钥存储路径正确有效的证书一起“TLS_RSA_WITH_AES_256_CBC_SHA256”密码规范加密渠道之一。
我的.NET客户端代码不能与此安全通道连接。 它不断地给2538错误。 我已经未经加密(不安全),配置另一信道。 客户端代码可以连接到该通道没有任何错误。
这是我的.NET客户端的代码:
Hashtable queueProperties = new Hashtable();
queueProperties[MQC.HOST_NAME_PROPERTY] = host; // IP address
queueProperties[MQC.PORT_PROPERTY] = 1541
queueProperties[MQC.CHANNEL_PROPERTY] = channel; // channel name
queueProperties[MQC.TRANSPORT_PROPERTY] = MQC.TRANSPORT_MQSERIES_MANAGED;
queueProperties[MQC.SSL_CERT_STORE_PROPERTY] = "*USER";
queueProperties[MQC.SSL_CIPHER_SPEC_PROPERTY] = "TLS_RSA_WITH_AES_256_CBC_SHA256";
queueProperties[MQC.SSL_PEER_NAME_PROPERTY] = "CN=FXCMTST1,O=IBM,C=US";
queueProperties["CertificateLabel"] = "ibmwebspheremqfxcmtst1";
queueProperties[MQC.KEY_RESET_COUNT] = 0;
MQEnvironment.SSLCertRevocationCheck = true;
queueProperties[MQC.USER_ID_PROPERTY] = user; // variable
queueProperties[MQC.PASSWORD_PROPERTY] = pwd; // variable
try
{
// Attempt the connection
queueManager = new MQQueueManager(qmgr, queueProperties);
strReturn = "Connected Successfully";
}
我还设置了MCA用户与所有需要的访问权限的有效用户。
当我删除这些行,并与一个不安全的替换频道名称上面的代码工作正常的非安全通道。
queueProperties[MQC.TRANSPORT_PROPERTY] = MQC.TRANSPORT_MQSERIES_MANAGED;
queueProperties[MQC.SSL_CERT_STORE_PROPERTY] = "*USER";
queueProperties[MQC.SSL_CIPHER_SPEC_PROPERTY] = "TLS_RSA_WITH_AES_256_CBC_SHA256";
queueProperties[MQC.SSL_PEER_NAME_PROPERTY] = "CN=FXCMTST1,O=IBM,C=US";
queueProperties["CertificateLabel"] = "ibmwebspheremqfxcmtst1";
queueProperties[MQC.KEY_RESET_COUNT] = 0;
MQEnvironment.SSLCertRevocationCheck = true;
我缺少的代码或MQ配置什么?
更新1:我发现该错误是由于不正确的路径密钥数据库。 我曾提到在证书放置,直到文件夹名称的路径。 然而,它预计将文件夹名称,然后KDB文件,而不extention名称。
这样的变化之后,2538错误消失。 但现在我得到2059的错误,在日志下面的错误消息。
“SSL握手过程中,密码规范协商不符合要求的密码规范的渠道。”
我的频道被配置为拥有“TLS_RSA_WITH_AES_256_CBC_SHA256”正如我在MQ资源管理器中设置。 客户端代码也发送相同的密码规范。 不过它提供了2059错误。
更新2:由于@JoshMc建议,我设置的组策略,它解决了上述错误。 然后,我开始得到错误“通道缺少证书”。
更新3:之后,我改变了对SSLCAUTH可选此错误消失。 此前它被设置为REQUIRED。 由于@JoshMc您指出。