Как настроить сертификат для клиента в Fellow-Oak Dicom?

#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);