-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Unix SslStream may not be sending intermediate CA certs when required #17511
Comments
Can confirm Unix SslStream is broken compared to Windows -- it's not sending intermediate certs even after manually importing an AlphaSSL Intermediate CA via This issue has thrown a bit of a spanner in the works, as iOS devices are all raising certificate errors when they hit a Unix instance. |
I've been looking into this to see if I could identify some kind of interim workaround without having to figure out how to modify the entire framework etc. I'm a fish out of water when it comes to unix, but I think the openssl context might simply need a call somewhere in Interop.OpenSsl.cs through to I notice that we can do this without any trouble on a Unix server:
..and the output displays all three certificates OK. So the nuts and bolts must be there :) Perhaps something a long the lines of this in Interop.OpenSsl.cs:
Good luck! |
This was holding me back a bit so have fixed and uploaded under dotnet/corefx#9810 -- feel free to use or not. Turned out no caching of the chain was necessary as SafeFreeSslCredentials is a one-time instantiation for the life of the TLS server. Rock on. |
Hm, I think I meant dotnet/corefx#9131. That looks much more relevant |
Fixed by dotnet/corefx#9814 |
As a followup to dotnet/corefx#9109 I was looking for the equivalent code in SslStream, and there doesn't seem to be any.
This issue is currently "determine if there really is a problem", with the implicit "if there was, fix it".
This is somewhat hard to test, since the only way to get the intermediate certs on the request given the current API (I think) is to have them in a CA store; but if they're in a CA store we'll already find them when we chain walk on the receiver side. If the client API made guarantees about when the chain was walked then it could be [OuterLoop] managed by adding intermediates to the store, setting up the client, removing the certs from the store, and letting the request initiate.
The text was updated successfully, but these errors were encountered: