Use X509_STORE instead of verifying manually #7034
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What, How & Why?
While testing against BoringSSL we encountered a complete inability to successfully validate the Atlas SSL certificates. It ultimately turned out that the reason was that we weren't passing the hostname string length to
X509_VERIFY_PARAM_set1_host()
which is an error in BoringSSL, but not OpenSSL, but in the course of debugging I refactored the way we actually include the bundled trusted certificates whenREALM_INCLUDE_CERTS
is defined.Previously, we'd install a certificate verification callback on the
SSL
instance and within it iterate over the bundled certificate list and manually perform x509 verification against the certificate presented by the server in the handshake. Looking at what curl does when using OpenSSL, the correct solution is to instead load the bundles certificate in the SSL context's trust store and let it perform verification instead of us doing it ourselves.☑️ ToDos