我正在ASP中实现gRPC服务器。NET Core 7用于linux服务器。它应该能够在HTTP3/QUIC协议上工作。我使用ZeroSSL证书进行ssl连接。
当我在Windows(Kestrel(上启动它时,客户端连接正确。
当我在Linux上启动它时,当用户(移动chrome(连接到服务器时,我得到以下异常:
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()
可能会有所帮助:在客户端,我看到在QUIC连接服务器上只发送一个没有父/CA证书的证书。
我应该如何配置服务器来解决该问题?
我遇到了多个相关问题,所以一旦我修复了它,可以在Linux上使用全链,我就为它创建了一个库。在NuGet和GitHub上查看它(在那里你也可以找到使用中间件和不使用中间件的示例(。您需要启用的预览功能。NET 6.0,但适用于。NET 7.0,这不再是必要的。