Ошибка аутентификации сертификата клиента: «System.IO.IOException: аутентификация не удалась, потому что удаленная сторона закрыла транспортный поток» - PullRequest
0 голосов
/ 10 апреля 2019

Отправка запроса https с использованием аутентификации клиентским сертификатом из приложения .Net приводит к ошибке «System.IO.IOException: Ошибка аутентификации из-за того, что удаленная сторона закрыла транспортный поток» .

Тот же запрос с t тот же сертификат клиента работает с почтальоном, а также с curl .

То же приложение .Net работает в других средах .

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var url = "https://yyyyyyyy:8081/xxxxxxxxx;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
X509Certificate2 cert = new X509Certificate2();
cert.Import("zzzzzz.pfx");
if (!cert.HasPrivateKey) throw new Exception("Certificate has no private key");
request.ClientCertificates.Add(cert);
if (request.ClientCertificates.Count != 1) throw new Exception("Certificate not loaded");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Bumm!!

Необработанное исключение: System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка. ---> System.IO.IOException: аутентификация не удалась, потому что удаленная сторона закрыла транспортный поток.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Решено!Проблема заключалась в том, что отсутствовал шифр TLS_RSA_WITH_AES_256_CBC_SHA256 (из-за правил безопасности .....)

0 голосов
/ 10 апреля 2019

Только для информации, выполнение одного и того же запроса с curl работает без проблем:

curl --tlsv1.2 -v \
  --cacert ca_crt.pem \
  --cert cert.pem \
  --key key.pem \
  https://yyyyyyyy:8081/xxxxxxxxx

И используется следующий набор шифров:

* SSL connection using TLS_RSA_WITH_AES_256_CBC_SHA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...