Detail observed behavior of AllowUnknownCertificateAuthority by stewartadam · Pull Request #6660 · dotnet/dotnet-api-docs

@stewartadam

AllowUnknownCertificateAuthority not only ignores untrusted roots, but also partial chains. This updates the documentation to reflect this behavior.

bartonjs

bartonjs

@stewartadam

Maintain a more concise warning about wincrypt basis and elaborates on the consequences of ignoring PartialChain.

@stewartadam

@stewartadam

@stewartadam

@stewartadam

@stewartadam

bartonjs

@bartonjs

bartonjs

NickCraver added a commit to StackExchange/StackExchange.Redis that referenced this pull request

Mar 7, 2024
This issue was brought to my attention last night (thanks reporter!): dotnet/dotnet-api-docs#6660

This changeset ensures that we do not honor self-signed certs or partial/broken chains as a result of `X509VerificationFlags.AllowUnknownCertificateAuthority` downstream and adds a few tests and utilities to generate test certificates (currently valid for ~9000 days). Instead we are checking that the certificate we're being told to trust is explicitly in the chain, given that the result of `.Build()` cannot be trusted for this case.

NickCraver added a commit to StackExchange/StackExchange.Redis that referenced this pull request

Mar 9, 2024
This issue was brought to my attention last night (thanks to Badrish Chandramouli): dotnet/dotnet-api-docs#6660

This changeset ensures that we do not honor self-signed certs or partial/broken chains as a result of `X509VerificationFlags.AllowUnknownCertificateAuthority` downstream and adds a few tests and utilities to generate test certificates (currently valid for ~9000 days). Instead we are checking that the certificate we're being told to trust is explicitly in the chain, given that the result of `.Build()` cannot be trusted for this case.

This also resolves an issue where `TrustIssuer` could be called but we'd error when _no errors_ were detected (due to requiring chain errors in our validator), this means users couldn't temporarily trust a cert while getting it installed on the machine for instance and migrating between the 2 setups was difficult.

This needs careful eyes, please scrutinize heavily. It's possible this breaks an existing user, but...it should be broken if so unless there's a case I'm not seeing.