Reputation: 191
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
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