Как подключить приложение .NET к IBM MQ с использованием аутентификации SSL/TLS на стороне сервера с именем пользователяC#

Место общения программистов C#
Ответить
Anonymous
 Как подключить приложение .NET к IBM MQ с использованием аутентификации SSL/TLS на стороне сервера с именем пользователя

Сообщение Anonymous »

Я пытаюсь подключить свое приложение .NET (8.0) к IBM MQ по TLS с использованием аутентификации на основе сертификатов X.509, но столкнувшись с проблемами во время рукопожатия SSL. IBM предоставляет механизм KeyStore на основе GSKIT. В подключении используется трастовый хранилище .kdb, сгенерированный из файлов .pem, и хорошо работает с библиотекой Pymqi и базовым GSKIT.
cd = pymqi.CD()
cd.ChannelName = b'SSL.CHANNEL'
cd.ConnectionName = b'mqhost.example.com(1414)'
cd.SSLCipherSpec = b'TLS_RSA_WITH_AES_128_CBC_SHA256'
cd.ChannelType = pymqi.CMQC.MQCHT_CLNTCONN
cd.TransportType = pymqi.CMQC.MQXPT_TCP

sco = pymqi.SCO()
sco.KeyRepository = b'/path/to/keystore' # .kdb, .rdb, .sth files

qmgr = pymqi.QueueManager(None)
qmgr.connect_with_options(b'QM1', cd, sco, user=b'mquser', password=b'securepass')

queue = pymqi.Queue(qmgr, b'TEST.QUEUE')
queue.put(b'Hello from Python!')
queue.close()
qmgr.disconnect()*
< /code>
В .net 8 клиент IBM MQ не использует GSKIT одинаково. Вместо этого он полагается на хранилище сертификатов Windows (или .pfx) для управления сертификатами X.509. СЕРТ видны в магазине Windows.using IBM.WMQ;
using System.Collections;
using System.Security.Cryptography.X509Certificates;

X509Store rootStore = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
rootStore.Open(OpenFlags.ReadWrite);
rootStore.Add(new X509Certificate2("path/to/root.crt"));
rootStore.Close();

X509Store caStore = new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser);
caStore.Open(OpenFlags.ReadWrite);
caStore.Add(new X509Certificate2("path/to/intermediate.crt"));
caStore.Close();

Hashtable queueProperties = new Hashtable
{
{ MQC.HOST_NAME_PROPERTY, "mqhost.example.com" },
{ MQC.CHANNEL_PROPERTY, "SSL.CHANNEL" },
{ MQC.PORT_PROPERTY, 1414 },
{ MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED },
{ MQC.SSL_CIPHER_SPEC_PROPERTY, "TLS_RSA_WITH_AES_128_CBC_SHA256" }
};

using var queueManager = new MQQueueManager("QM1", queueProperties);
// Receive or send logic here...
< /code>
python (через Pymqi) использует файл IBM GSKIT и .KDB для конфигурации SSL Trust. .Net не использует .kdb, вместо этого ожидает CERT в формате Windows /пользователь-сертификации или в формате PKCS#12 (.pfx), если выполнены программно. X.509 сертификаты? Мне нужно решить эти проблемы с рукопожатием TLS или доверие. src = "https://i.sstatic.net/oj5f8wda.png"/>
Сертификаты пользователя в скрипте развертывания


Подробнее здесь: https://stackoverflow.com/questions/797 ... thenticati
Ответить

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

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

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

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

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