plugin.api.websocket: use certifi's cacert.pem #4977
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.
certifi
as a direct dependency (already defined byrequests
) and don't set a version rangeca_certs
SSL option inWebsocketClient
which defaults to the CA certs file bundled bycertifi
, similar to HTTPS requests made byrequests
Resolves streamlink/streamlink-appimage#1
While
requests
uses the bundledcacert.pem
CA certificates file by thecertifi
dependency (viacertifi.where()
) for all HTTPS requests being made by Streamlink (since Streamlink doesn't set any custom paths),websocket-client
defaults to the system's CA certs which get loaded by OpenSSL. Depending on the system config, this can cause issues, and it's also inconsistent with HTTPS requests made byrequests
. Streamlink should therefore load the samecacert.pem
when making secure websocket connections viawebsocket-client
, likerequests
does for all HTTPS requests.Similar to
requests
and itsREQUESTS_CA_BUNDLE
/CURL_CA_BUNDLE
env vars,WEBSOCKET_CLIENT_CA_BUNDLE
can be set to override the default path.I have no idea though what changing this does to OpenSSL's
SSL_CERT_FILE
env var and whether this will still be supported.