|
115 | 115 |
|
116 | 116 |
|
117 | 117 | from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN, HAS_TLSv1_3 |
| 118 | +from _ssl import _DEFAULT_CIPHERS |
118 | 119 | from _ssl import _OPENSSL_API_VERSION |
119 | 120 |
|
120 | 121 |
|
|
174 | 175 | HAS_NEVER_CHECK_COMMON_NAME = hasattr(_ssl, 'HOSTFLAG_NEVER_CHECK_SUBJECT') |
175 | 176 |
|
176 | 177 |
|
177 | | -# Disable weak or insecure ciphers by default |
178 | | -# (OpenSSL's default setting is 'DEFAULT:!aNULL:!eNULL') |
179 | | -# Enable a better set of ciphers by default |
180 | | -# This list has been explicitly chosen to: |
181 | | -# * TLS 1.3 ChaCha20 and AES-GCM cipher suites |
182 | | -# * Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE) |
183 | | -# * Prefer ECDHE over DHE for better performance |
184 | | -# * Prefer AEAD over CBC for better performance and security |
185 | | -# * Prefer AES-GCM over ChaCha20 because most platforms have AES-NI |
186 | | -# (ChaCha20 needs OpenSSL 1.1.0 or patched 1.0.2) |
187 | | -# * Prefer any AES-GCM and ChaCha20 over any AES-CBC for better |
188 | | -# performance and security |
189 | | -# * Then Use HIGH cipher suites as a fallback |
190 | | -# * Disable NULL authentication, NULL encryption, 3DES and MD5 MACs |
191 | | -# for security reasons |
192 | | -_DEFAULT_CIPHERS = ( |
193 | | - 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:' |
194 | | - 'TLS13-AES-128-GCM-SHA256:' |
195 | | - 'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:' |
196 | | - 'ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:' |
197 | | - '!aNULL:!eNULL:!MD5:!3DES' |
198 | | - ) |
199 | | - |
200 | | -# Restricted and more secure ciphers for the server side |
201 | | -# This list has been explicitly chosen to: |
202 | | -# * TLS 1.3 ChaCha20 and AES-GCM cipher suites |
203 | | -# * Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE) |
204 | | -# * Prefer ECDHE over DHE for better performance |
205 | | -# * Prefer AEAD over CBC for better performance and security |
206 | | -# * Prefer AES-GCM over ChaCha20 because most platforms have AES-NI |
207 | | -# * Prefer any AES-GCM and ChaCha20 over any AES-CBC for better |
208 | | -# performance and security |
209 | | -# * Then Use HIGH cipher suites as a fallback |
210 | | -# * Disable NULL authentication, NULL encryption, MD5 MACs, DSS, RC4, and |
211 | | -# 3DES for security reasons |
212 | | -_RESTRICTED_SERVER_CIPHERS = ( |
213 | | - 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:' |
214 | | - 'TLS13-AES-128-GCM-SHA256:' |
215 | | - 'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:' |
216 | | - 'ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:' |
217 | | - '!aNULL:!eNULL:!MD5:!DSS:!RC4:!3DES' |
218 | | -) |
| 178 | +_RESTRICTED_SERVER_CIPHERS = _DEFAULT_CIPHERS |
219 | 179 |
|
220 | 180 | CertificateError = SSLCertVerificationError |
221 | 181 |
|
@@ -393,8 +353,6 @@ class SSLContext(_SSLContext): |
393 | 353 |
|
394 | 354 | def __new__(cls, protocol=PROTOCOL_TLS, *args, **kwargs): |
395 | 355 | self = _SSLContext.__new__(cls, protocol) |
396 | | - if protocol != _SSLv2_IF_EXISTS: |
397 | | - self.set_ciphers(_DEFAULT_CIPHERS) |
398 | 356 | return self |
399 | 357 |
|
400 | 358 | def __init__(self, protocol=PROTOCOL_TLS): |
@@ -530,8 +488,6 @@ def create_default_context(purpose=Purpose.SERVER_AUTH, *, cafile=None, |
530 | 488 | # verify certs and host name in client mode |
531 | 489 | context.verify_mode = CERT_REQUIRED |
532 | 490 | context.check_hostname = True |
533 | | - elif purpose == Purpose.CLIENT_AUTH: |
534 | | - context.set_ciphers(_RESTRICTED_SERVER_CIPHERS) |
535 | 491 |
|
536 | 492 | if cafile or capath or cadata: |
537 | 493 | context.load_verify_locations(cafile, capath, cadata) |
|
0 commit comments