Valery Yegorov
Valery Yegorov

Reputation: 191

ASP.NET Core 7 RC 2 Kestrel HTTP3/QUIC on linux. The connection listener failed to accept any new connections

I'm implementing gRPC server in ASP.NET Core 7 for linux server. It should be able to work on HTTP3/QUIC protocol. I'm using ZeroSSL certificate for ssl connection.

When I'm starting it on Windows (Kestrel) client connects correctly.

When I'm starting it on Linux, when user (mobile chromium) connect to server I get following exception:

System.Security.Authentication.AuthenticationException: Authentication failed because the remote party sent a TLS alert: 'CertificateUnknown'.
  at System.Net.Quic.QuicConnection.HandleEventShutdownInitiatedByTransport(_SHUTDOWN_INITIATED_BY_TRANSPORT_e__Struct& data)
  at System.Net.Quic.QuicConnection.HandleConnectionEvent(QUIC_CONNECTION_EVENT& connectionEvent)
  at System.Net.Quic.QuicConnection.NativeCallback(QUIC_HANDLE* connection, Void* context, QUIC_CONNECTION_EVENT* connectionEvent)
 --- End of stack trace from previous location ---
  at System.Net.Quic.ValueTaskSource.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
  at System.Net.Quic.QuicListener.PendingConnection.StartHandshake(QuicConnection connection, SslClientHelloInfo clientHello,
  Func`4 connectionOptionsCallback)
  at System.Net.Quic.QuicListener.PendingConnection.DisposeAsync()
  at System.Net.Quic.QuicListener.AcceptConnectionAsync(CancellationToken cancellationToken)
  at Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.Internal.QuicConnectionListener.AcceptAsync(IFeatureCollection features, CancellationToken cancellationToken)
  at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.ConnectionDispatcher`1.<>c__DisplayClass8_0.<<StartAcceptingConnectionsCore>g__AcceptConnectionsAsync|0>d.MoveNext()

May be helpful: On client side I see that on QUIC connection server sends only one certificate without parent/CA certificates.

How should I configure server to fix that issue?

Upvotes: 0

Views: 636

Answers (1)

Mark Cilia Vincenti
Mark Cilia Vincenti

Reputation: 1614

I've had multiple related issues, so once I fixed it to work with the full chain on Linux, I created a library for it. Check it out at NuGet and GitHub (where you can also find samples, using middleware and without middleware). You need to enable preview features for .NET 6.0, but for .NET 7.0 this is no longer necessary.

Upvotes: 2

Related Questions