Веб-API ASP.NET 2 — запрос был прерван: не удалось создать безопасный канал SSL/TLSC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Веб-API ASP.NET 2 — запрос был прерван: не удалось создать безопасный канал SSL/TLS

Сообщение Anonymous »

Все остальные ответы на вопрос «Запрос был прерван: не удалось создать безопасный канал SSL/TLS» по сути говорят: «Убедитесь, что TLS 1.2 включен». Это не сработало, и у меня есть снимки Wireshark для резервного копирования.
Теперь у меня есть веб-API ASP.NET .NET Framework 4.7.2, работающий в IIS. . Я пытаюсь взаимодействовать со сторонним API, которому требуется сертификат клиента для mTLS. Когда мой API отправляет первоначальный запрос на вход в систему, я получаю сообщение об ошибке. Запрос был прерван: не удалось создать безопасный канал SSL/TLS. Исключение, похоже, не содержит каких-либо подробностей о причине и не имеет внутреннего исключения.
Самое безумие в том, что я только получаю эту ошибку, когда мой API работает в IIS на сервере Windows 2022 (AWS EC2). Я не получаю сообщение об ошибке при локальном тестировании. Более того, я не получаю сообщение об ошибке, когда копирую точный код из моего API в консольное приложение и запускаю это на том же сервере, на котором работает API.
Сертификат загружается так:

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

using (var s3Client = new AmazonS3Client())
{
var response = s3Client.GetObject(bucket, key);

using (response.ResponseStream)
using (var file = new MemoryStream())
{
response.ResponseStream.CopyTo(file);
cert = new X509Certificate2(file.ToArray(), certPassword);
}
}
и используется так:

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

var httpClientHandler = new HttpClientHandler();
httpClientHandler.ClientCertificates.Add(cert);

_httpClient = new HttpClient(httpClientHandler)
{
BaseAddress = _config.BaseUri
};
В Wireshark кажется, что разговор просто обрывается.
Вот как выглядит успех (консольное приложение):
Успех
Вот как выглядит сбой (ASP.NET Web API 2)
Сбой

Из ответов на подобные вопросы я пробовал :

  • добавление каждой записи реестра, связанной с включением TLSv1.2 в Windows.
  • добавление ServicePointManager.SecurityProtocol = SecurityProtocolType.tls12 в код.
  • добавление ServicePointManager.ServerCertificateValidationCallback += (отправитель, сертификат, цепочка, ошибки) => true в код.
  • убедитесь, что в файле Web.config для httpRuntime установлено значение 4.7.2.
Ничего не изменилось, и Wireshark показывает TLSv1.2 происходит.

Подробнее здесь: https://stackoverflow.com/questions/791 ... secure-cha
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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