#c# #ssl-certificate #tls1.2 #dicom #fo-dicom
#c# #ssl-сертификат #tls1.2 #dicom #fo-dicom
Вопрос:
Дорогие ребята, я пытаюсь настроить клиент Dicom, используя библиотеку Fellow Oak Dicom. Я успешно выполняю все запросы, используя класс DicomClient, как указано на их странице в githubhttps://github.com/fo-dicom/fo-dicom .
Однако, как я могу указать сертификат, который будет использоваться для аутентификации моего клиента?
Я обнаружил, что это то, как вы обычно делаете в C #, https://www.medo64.com/2014/09/client-authenticated-tls-in-c и я вижу, что это именно то, что делает библиотека Fo-Dicom. Однако я не могу найти способ указать свой сертификат.
Ответ №1:
Хорошо, я решил проблему, переопределив класс DesktopNetworkStream, который я только что заменил, в главном конструкторе,
ssl.AuthenticateAsClient(host)
с
var trust = new X509Certificate2("serverCert.p12","myPwd");
var key = new X509Certificate2("clientCert.p12","myPwd");
var clientCertificateCollection = new X509CertificateCollection(new X509Certificate[] { trust,key });
ssl.AuthenticateAsClient(host, clientCertificateCollection, SslProtocols.Tls12, false);
и я вызываю это вместо
client.Send(serverIp, serverPort, false, callingAET, calledAET);
с
var _networkStream = new DesktopNetworkStream(serverIp, serverPort, true, true, true);
client.Send(_networkStream, callingAET, calledAET, 5000);