-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support optional client certificates #57308
Comments
Tagging subscribers to this area: @dotnet/ncl Issue DetailsDescription
The client's call to ConnectAsync fails with:
I can't tell if the termination is happening on the client or server. The server logs show it did accept the connection before failing (see #57246). Recommendation: .NET 7
|
It seems like in that case we don't even get callback from MsQuic and it fails internally. I will take a look to at least understand. |
Triage: We need to double check if msquic now supports all we need. |
This should functionally work. But we do have duplicated logic for building the chain and evaluating client cert validity from |
this was failing within msquic last time I check @ManickaP e.g. if certificate was not provided it would always fail. |
So need to retest and potentially file an issue in msquic? |
yes. possibly related to microsoft/msquic#1249 |
I guess that's related to missing implementation for |
I retested this, we don't get any callback from MsQuic when client sends NULL certificate. |
We may be able to fix it up if we get handshake complete even without certificate callback. BTW did you test this on Windows? The issue I was talking while back was Schannel specific. runtime/src/libraries/System.Net.Quic/tests/FunctionalTests/MsQuicTests.cs Lines 333 to 337 in ee4640a
Can this pass now both options? #64944 is very recent and I don't know if that is just flaky on Server 2022 |
No, I don't have any Win 11 machine atm. It reproduced on Linux. |
Triage: we cannot work around by not setting msquic issue microsoft/msquic#1953 |
Progress? microsoft/msquic#2702 |
maybe. I know @ManickaP was planning to do more testing. We should enable our tests on all platforms before we claim victory. |
ATM, we cannot update msquic due to this: microsoft/msquic#2732, so we cannot consume it yet. However, we might test it out locally and do some fix ups if necessary; otherwise this should just work (tm). @rzikm is this something you could look into? |
@ManickaP just curious, is that bug you mentioned something that was broken recently (and why we can't update)? I tested the latest MsQuic locally and it will need some fixes from our side (namely passing |
It's portable certificates specific (in our case on Linux), it's been introduced in microsoft/msquic#2419. Some more details are in that PR. |
Description
SslServerAuthenticationOptions.ClientCertificateRequired = true
is needed to prompt the client to send a certificate. SslStream will invoke RemoteCertificateValidationCallback with the result, even if it's null, and the server can choose if it wants to accept the connection. QuicListener however will terminate the connection without invoking RemoteCertificateValidationCallback. This is feature gap for quic that should be filled if possible.The client's call to ConnectAsync fails with:
I can't tell if the termination is happening on the client or server. The server logs show it did accept the connection before failing (see #57246).
Recommendation: .NET 7
The text was updated successfully, but these errors were encountered: