Операция расшифровки не удалась, см. внутреннее исключение

Я использую Visual Studio 2017 и .NET Core 2.x. Я создал два проекта. Первый — это внутренний API (https://localhost:51637). Второй — внешний веб-сайт (https://localhost:54146). Интерфейсный веб-сайт вызывает внутренний API. Они оба работают локально на моей машине.

Проблема в том, что когда внешний интерфейс пытается отправить запрос к API, я получаю это исключение

info: Microsoft.AspNetCore.Server.Kestrel[20]
    Connection id "0HLKNTHFLCEA9" request processing ended abnormally.
System.IO.IOException: The decryption operation failed, see inner exception. ---> System.ComponentModel.Win32Exception: An unknown error occurred while processing the certificate
    --- End of inner exception stack trace ---
    at System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter adapter, Memory`1 buffer)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal.AdaptedPipeline.ReadInputAsync(Stream stream)
    at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
    at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
    at System.IO.Pipelines.Pipe.ReadAsync(CancellationToken token)
    at System.IO.Pipelines.Pipe.DefaultPipeReader.ReadAsync(CancellationToken cancellationToken)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.BeginRead(ValueTask`1& awaitable)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication`1 application)

person Kevin Brydon    schedule 21.02.2019    source источник


Ответы (2)


Эта загадочная ошибка также может возникать между двумя разрабатываемыми приложениями .NET Core, где приложение .NET — это ваш собственный веб-сайт или API, а другое — клиентское консольное приложение .NET или что-то еще.

Ошибка на стороне сервера соответствует приведенному выше дампу OP, а ошибка на стороне клиента:

System.Net.Http.HttpRequestException: не удалось установить SSL-соединение, см. внутреннее исключение. ---> System.Security.Authentication.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.

Запустите это, чтобы доверять сертификату разработки и решить проблему.

dotnet dev-certs https -t -v

Больше информации здесь.

https://www.hanselman.com/blog/DevelopingLocallyWithASPNETCoreUnderHTTPSSSLAndSelfSignedCerts.aspx

person Luke Puplett    schedule 17.03.2019

Оказывается, мой браузер (Firefox) не доверял сертификату API. Чтобы исправить это

  1. Создайте пустую страницу index.html в папке wwwroot проекта API (убедитесь, что проект API настроен для обслуживания статических файлов).
  2. Запустите проект API
  3. Укажите в браузере страницу index.html.
  4. Появится предупреждение о том, что «Ваше соединение не защищено».
  5. Нажмите «Дополнительно» и «Добавить исключение».

Интерфейсный веб-сайт теперь сможет успешно вызывать внутренний API.

person Kevin Brydon    schedule 21.02.2019
comment
Работает путем ввода любой конечной точки https localhost API в адресной строке Firefox. - person avenmore; 03.09.2019