IBM WebSphere MQ 8.0 버전을 사용 중입니다.SSL 채널 연결 용 MQ에서 2538 오류
"TLS_RSA_WITH_AES_256_CBC_SHA256"Cipher Spec 암호화와 유효한 인증서가 설치되고 키 저장소 경로에 올바르게 매핑 된 채널 중 하나를 구성했습니다.
.NET 클라이언트 코드가이 보안 채널에 연결할 수 없습니다. 그것은 2538 오류를 지속적으로 제공합니다. 암호화되지 않은 채 다른 채널이 구성되었습니다 (보안되지 않음). 클라이언트 코드는 오류없이이 채널에 연결할 수 있습니다.
이 내 .NET 클라이언트 코드입니다 : 나는 또한 필요한 모든 액세스 권한이있는 유효한 사용자에게 MCA 사용자를 설정 한
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";
}
.
위 코드는이 줄을 제거하고 채널 이름을 보안되지 않은 채널 이름으로 바꿀 때 보안되지 않은 채널에서 잘 작동합니다.
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 파일 이름이 오는 것으로 예상됩니다.
이 변경을 수행 한 후 2538 오류가 사라졌습니다. 하지만 지금 로그에서 아래의 오류 메시지와 함께 2059 오류가 나타납니다.
는내 채널 I는 MQ 탐색기에서 설정 한대로 "TLS_RSA_WITH_AES_256_CBC_SHA256"가 구성되어는 "CipherSpec은 ... 채널에 필요한 CipherSpec과 일치하지 않습니다 SSL 핸드 셰이크 중에 협상". 클라이언트 코드도 동일한 암호 스펙을 보냄니다. 그래도 2059 오류가 발생합니다.
업데이트 2 : @JoshMc에서 제안한대로 그룹 정책을 설정하고 오류를 해결했습니다. 그런 다음 "채널에 인증서가 없습니다"라는 오류가 표시되기 시작했습니다.
업데이트 3 : SSLCAUTH를 OPTIONAL (으)로 변경하면이 오류가 사라집니다. 이전에는 REQUIRED로 설정되었습니다. 지적한 @ JoshMc에게 감사드립니다.
queueProperties[MQC.SSL_PEER_NAME_PROPERTY] = "ibmwebspheremqtestqueue";
내가 조언 :
전체 클라이언트가 설치되어 있지 않습니다. 난 그냥 코드를 사용하여 닷넷 MQ 서버에 연결할 수 있습니다. 또한, 당신이 제안한 것처럼 동료 이름을 바꿀 것입니다. –
그렇다면 TLS를 수행 할 때도 클라이언트가 설치되어 있지 않으면 dll은 기본적으로 관리 모드로 설정되기 때문에'MQC.TRANSPORT_PROPERTY'를 설정할 필요가 없습니다. 로그가 표시되는 내용을 알려주고, 클라이언트 쪽을 수행하십시오. Net 추적은 올바른 방향으로 사용자를 안내 할 것입니다. – JoshMc
@JoshMc MQC.TRANSPORT_PROPERTY – Roger