NET Core 2.1 на Google Cloud Platform Не удалось аутентифицировать HTTPS-соединение Ошибка установления связи TLS с неожиданным форматом пакета

Я пытаюсь настроить свое веб-приложение на Google Cloud Platform и использую https. Когда браузер пытается подключиться через порт https, Kestrel сообщает следующее:

Hosting environment: Development
Content root path: /home/cvanem2/abc/HelloWorldAspNetCore
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
dbug: HttpsConnectionAdapter[1]
      Failed to authenticate HTTPS connection.
System.IO.IOException: The handshake failed due to an unexpected packet format.
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
--- End of stack trace from previous location where exception was thrown ---
   at System.Net.Security.SslState.ThrowIfExceptional()
   at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result)
   at System.Net.Security.SslStream.EndAuthenticateAsServer(IAsyncResult asyncResult)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsServerAsync>b__51_1(IAsyncResult iar)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionAdapter.InnerOnConnectionAsync(ConnectionAdapterContext context)ext)

У меня есть эта проблема в моем производственном коде, но ее также можно легко создать с помощью предоставленного образца кода. Вот инструкции о том, как воспроизвести проблему, если у вас настроен проект облачной платформы Google:

  1. Откройте окно терминала GCP
  2. sudo apt-get -y установить dotnet-sdk-2.1
  3. dotnet new razor -o HelloWorldAspNetCore
  4. cd HelloWorldAspNetCore /
  5. dotnet dev-сертификаты https
  6. dotnet run
  7. Установите для веб-просмотра порт 5001 и попробуйте открыть. Ошибка будет отображаться в окне терминала.

Тот же самый код отлично работает на ПК с Windows. Я также скомпилировал код Windows в контейнер докеров Linux в Windows и выполнил докер. Проблема возникает, если код выполняется в докере, поэтому он, похоже, связан с ОС, в которой запущен код .net. Я попытался проанализировать пакеты TLS из образа Docker с помощью Wireshark, но данные зашифрованы после первых нескольких пакетов, и ничего не оказалось ошибочным. Любая помощь будет оценена.


person Chris    schedule 02.08.2018    source источник
comment
Я воспроизвел ошибку на своей рабочей станции Linux, поэтому не думаю, что причина в GCP. Все еще ищу обходной путь или решение ...   -  person Jeffrey Rennie    schedule 02.08.2018
comment
@Крис. Сможете ли вы решить эту проблему ?. Не могли бы вы поделиться решением. Спасибо.   -  person ram kris    schedule 30.09.2019


Ответы (1)


Вы можете изменить launchSettings.json, изменить http перед https

"WebApplication2": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "api/values",
  "environmentVariables": {      
    "ASPNETCORE_ENVIRONMENT": "Development"
  },
  **"applicationUrl": "http://localhost:5000;https://localhost:5001"**
}
person Crashsol    schedule 03.08.2018