fix: use system CA certificates for requests #1367
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.
On Fedora 34, I've built Zeal with Qt5.15.2 and OpenSSL-1.1.1l.
When trying to check for updates, the request fails with "SSL handshake error". I can also reproduce this issue in one of the Qt examples, which includes the more descriptive message "The issuer certificate of a locally looked up certificate could not be found".
The root cause seems to be the same as described in another issue: If I run
strace
onzeal
, I confirm that it doesn't access my certificate bundle (/etc/pki/tls/certs/ca-bundle.crt
), instead it tries to lookupc_rehash
generated files that aren't present.Regardless of which files are present, Zeal can be resilient to these cases and load the certificate bundle explicitly. My pull request accomplishes that by using
QSslConfiguration
's built-in method that provides those system certificates. This way, the peer certificate chain can be verified and no SSL handshake error is thrown.