ssl.create_default_context(purpose=Purpose.SERVER_AUTH, cafile=None, capath=None, cadata=None)
Return a new SSLContext
object with default settings for the given purpose. The settings are chosen by the ssl
module, and usually represent a higher security level than when calling the SSLContext
constructor directly.
cafile, capath, cadata represent optional CA certificates to trust for certificate verification, as in SSLContext.load_verify_locations()
. If all three are None
, this function can choose to trust the system’s default CA certificates instead.
The settings are: PROTOCOL_SSLv23
, OP_NO_SSLv2
, and OP_NO_SSLv3
with high encryption cipher suites without RC4 and without unauthenticated cipher suites. Passing SERVER_AUTH
as purpose sets verify_mode
to CERT_REQUIRED
and either loads CA certificates (when at least one of cafile, capath or cadata is given) or uses SSLContext.load_default_certs()
to load default CA certificates.
Note
The protocol, options, cipher and other settings may change to more restrictive values anytime without prior deprecation. The values represent a fair balance between compatibility and security.
If your application needs specific settings, you should create a SSLContext
and apply the settings yourself.
Note
If you find that when certain older clients or servers attempt to connect with a SSLContext
created by this function that they get an error stating “Protocol or cipher suite mismatch”, it may be that they only support SSL3.0 which this function excludes using the OP_NO_SSLv3
. SSL3.0 is widely considered to be completely broken. If you still wish to continue to use this function but still allow SSL 3.0 connections you can re-enable them using:
ctx = ssl.create_default_context(Purpose.CLIENT_AUTH) ctx.options &= ~ssl.OP_NO_SSLv3
New in version 3.4.
Changed in version 3.4.4: RC4 was dropped from the default cipher string.
Please login to continue.