Клиент .Net MQ не может подключиться к MQ через TLS CWSMQ0006E по причине 2538.C#

Место общения программистов C#
Ответить
Anonymous
 Клиент .Net MQ не может подключиться к MQ через TLS CWSMQ0006E по причине 2538.

Сообщение Anonymous »

У нас работает сервер MQ, и я пытаюсь подключиться к нему с помощью XMS. Использование .Net6. Я могу подключиться к каналу usecure и прочитать его. Но при подключении к другому защищенному каналу у меня возникают проблемы.
У меня есть действительный сертификат, импортированный в хранилище сертификатов Windows (с использованием mmc).
На сервере используется CipherSpec TLS_RSA_WITH_AES_256_GCM_SHA384.
Мой код для выполнения соединения:

Код: Выделить всё

                XMSFactoryFactory xff = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
IBM.XMS.IConnectionFactory cf = xff.CreateConnectionFactory();
cf.SetStringProperty(XMSC.WMQ_HOST_NAME, "hostname");
cf.SetIntProperty(XMSC.WMQ_PORT, 1414);
cf.SetStringProperty(XMSC.WMQ_CHANNEL, "channelname");
cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "manager");
cf.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_V1);
cf.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, "TLS_AES_256_GCM_SHA384");

IConnection conn = cf.CreateConnection();
После этого я получаю сообщение об ошибке IBM.XMS.XMSException: 'CWSMQ0006E с причиной 2538. Связанное исключение — MQRC_HOST_NOT_AVAILABLE.
В журналах сервера MQ я получаю следующее:

Код: Выделить всё

The SSL or TLS connection was closed by the remote host '255.255.255.255' during
the secure socket handshake. The channel is '????'; in some cases its name
cannot be determined and so is shown as '????'. The channel did not start.
ACTION:
Check the remote end of the channel for SSL and TLS errors. Fix them and
restart the channel.
Я не понимаю эту ошибку, поскольку указываю CipherSpec. У меня также есть действительный сертификат в хранилище ключей Windows. Я много читал об указании пути к файлу kbd, но мне нужно понять, как экспортировать сертификат в файл kbd.
Насколько я понимаю, приложение не может нашел мой сертификат и не смог правильно пожать руку из-за несовпадающей спецификации шифрования. Я пробовал несколько спецификаций шифрования, ни один из них не работает.
Если мне нужно предоставить дополнительную информацию, дайте мне знать.
ОБНОВЛЕНИЕ :
Поскольку я предположил, что это проблема с сертификатом и сервер настроен на прием только TLS 1.2/1.3, я создал файл kdb с личным сертификатом, который добавил к нему, с помощью команды:< /p>

Код: Выделить всё

"C:\Program Files (x86)\ibm\gsk8\bin\gsk8capicmd.exe" -cert -add -db test.kdb -type kdb -label ibmwebspheremqusername -trust enable -file personal.cer
При проверке этого сертификата я получил следующую ошибку:

Код: Выделить всё

CTGSK2146W An invalid certificate chain was found.
Additional untranslated info:
GSKKM_LAST_VALIDATION_ERROR: No certificate chain built
Затем я добавил подписанный сертификат доверия в одно и то же хранилище kdb, и когда я запускаю проверку обоих сертификатов, я получаю одобрение для подписанного сертификата доверия, но для личного сертификата возникает следующая ошибка:

Код: Выделить всё

CTGSK2052W An invalid basic constraint extension was found.
Additional untranslated info:
GSKKM_LAST_VALIDATION_ERROR: GSKVAL_ERR_CA_MISSING_CRITICAL_BASIC_CONSTRAINT (575051)
Когда я запускаю код C#, я получаю:

Код: Выделить всё

{"CWSMQ0006E: An exception was received during the call to the method ConnectionFactory.CreateConnection: CompCode: 2, Reason: 2381. During execution of the specified method an exception was thrown by another component. See the linked exception for more information."}
Связанное исключение

Код: Выделить всё

MQRC_KEY_REPOSITORY_ERROR
Это вполне ожидаемо, поскольку проверка сертификата в файле kdb не удалась

Подробнее здесь: https://stackoverflow.com/questions/790 ... eason-2538
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»