Search code examples
ubuntuhttpscertificateasp.net-core-2.1

How to setup the HTTPS certificate in an ASP.NET Core 2.1 application running against UBUNTU?


I have a simple web app created with ASP.NET Core 2.1 and when debugging keep bumping into a HTTPS certificate.

While it works fine in Windows, it does not in Ubuntu due to the lack of the centralized certificate store.

Hosting environment: Development
Content root path: /home/perret/Desktop/Tests/Showtime/ConsoleAppPlaygroun/WebApplicationTest
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: Authentication failed because the remote party has closed the transport stream.
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.SslStream.BeginAuthenticateAsServer(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken, AsyncCallback asyncCallback, Object asyncState)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsServerAsync>b__51_0(SslServerAuthenticationOptions arg1, CancellationToken arg2, AsyncCallback callback, Object state)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state)
   at System.Net.Security.SslStream.AuthenticateAsServerAsync(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionAdapter.InnerOnConnectionAsync(ConnectionAdapterContext context)

I read:

Still I don't see any guideline / tutorial to properly setup the certificate with Ubuntu when debugging.


Solution

  • Ok I managed to make it work since I switched to Manjaro and I had related problems to fix up, the steps are the same for both distributions when it comes to the development certificate.

    The steps:

    • First, install the tools for the development self-signed certificate: dotnet tool install --global dotnet-dev-certs

    • You then need to export the path of the dotnet tools for each bash instance: export PATH="$PATH:/home/{your-username}/.dotnet/tools"

    • Register the development self-signed certificate: dotnet dev-certs https

    • That's it, you are ready to debug with https ~~