diff --git a/Cipher_Suites.mediawiki b/Cipher_Suites.mediawiki index 28fe413..dfaa109 100644 --- a/Cipher_Suites.mediawiki +++ b/Cipher_Suites.mediawiki @@ -77,25 +77,25 @@ IANA, OpenSSL and GnuTLS use different naming for the same ciphers. The table be | style="background-color: #fc6; font-weight: bold;" | ECDHE-RSA-CHACHA20-POLY1305 |- ! scope=row | 0x00,0x9E -| style="background-color: #fc6; font-weight: bold; text-align: center;" | 10 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_AES_128_GCM_SHA256 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 -| style="background-color: #fc6; font-weight: bold;" | DHE-RSA-AES128-GCM-SHA256 +| style="" data-sort-value="1000" | +| style="" | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 +| style="" | TLS_DHE_RSA_AES_128_GCM_SHA256 +| style="" | TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 +| style="" | DHE-RSA-AES128-GCM-SHA256 |- ! scope=row | 0x00,0x9F -| style="background-color: #fc6; font-weight: bold; text-align: center;" | 11 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_AES_256_GCM_SHA384 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 -| style="background-color: #fc6; font-weight: bold;" | DHE-RSA-AES256-GCM-SHA384 +| style="" data-sort-value="1000" | +| style="" | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 +| style="" | TLS_DHE_RSA_AES_256_GCM_SHA384 +| style="" | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 +| style="" | DHE-RSA-AES256-GCM-SHA384 |- ! scope=row | 0xCC,0xAA -| style="background-color: #fc6; font-weight: bold; text-align: center;" | 12 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_CHACHA20_POLY1305 -| style="background-color: #fc6; font-weight: bold;" | TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 -| style="background-color: #fc6; font-weight: bold;" | DHE-RSA-CHACHA20-POLY1305 +| style="" data-sort-value="1000" | +| style="" | TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 +| style="" | TLS_DHE_RSA_CHACHA20_POLY1305 +| style="" | TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 +| style="" | DHE-RSA-CHACHA20-POLY1305 |- ! scope=row | 0xC0,0x23 | style="background-color: #ccc; font-weight: bold; text-align: center;" | 13 @@ -154,18 +154,18 @@ IANA, OpenSSL and GnuTLS use different naming for the same ciphers. The table be | style="background-color: #ccc; font-weight: bold;" | ECDHE-RSA-AES256-SHA |- ! scope=row | 0x00,0x67 -| style="background-color: #ccc; font-weight: bold; text-align: center;" | 21 -| style="background-color: #ccc; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 -| style="background-color: #ccc; font-weight: bold;" | TLS_DHE_RSA_AES_128_CBC_SHA256 -| style="background-color: #ccc; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 -| style="background-color: #ccc; font-weight: bold;" | DHE-RSA-AES128-SHA256 +| style="" data-sort-value="1000" | +| style="" | TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 +| style="" | TLS_DHE_RSA_AES_128_CBC_SHA256 +| style="" | TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 +| style="" | DHE-RSA-AES128-SHA256 |- ! scope=row | 0x00,0x6B -| style="background-color: #ccc; font-weight: bold; text-align: center;" | 22 -| style="background-color: #ccc; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 -| style="background-color: #ccc; font-weight: bold;" | TLS_DHE_RSA_AES_256_CBC_SHA256 -| style="background-color: #ccc; font-weight: bold;" | TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 -| style="background-color: #ccc; font-weight: bold;" | DHE-RSA-AES256-SHA256 +| style="" data-sort-value="1000" | +| style="" | TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 +| style="" | TLS_DHE_RSA_AES_256_CBC_SHA256 +| style="" | TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 +| style="" | DHE-RSA-AES256-SHA256 |- ! scope=row | 0x00,0x9C | style="background-color: #ccc; font-weight: bold; text-align: center;" | 23 @@ -2445,6 +2445,6 @@ IANA, OpenSSL and GnuTLS use different naming for the same ciphers. The table be - + Colors correspond to the [[Security/Server Side TLS#Modern_compatibility|Modern]], [[Security/Server Side TLS#Intermediate_compatibility_.28recommended.29|Intermediate]], and [[Security/Server Side TLS#Old_backward_compatibility|Old]] compatibility levels. Each compatibility level is a superset of the more modern levels above it. diff --git a/Server_Side_TLS.mediawiki b/Server_Side_TLS.mediawiki index d722d5b..bb9042f 100644 --- a/Server_Side_TLS.mediawiki +++ b/Server_Side_TLS.mediawiki @@ -21,7 +21,6 @@ Mozilla maintains three recommended configurations for servers using TLS. Pick t * Modern''':''' Modern clients that support TLS 1.3, with no need for backwards compatibility * Intermediate''':''' Recommended configuration for a general-purpose server -* Old''':''' Services accessed by very old clients or libraries, such as Internet Explorer 8 (Windows XP), Java 6, or OpenSSL 0.9.8 {| class="wikitable" style="margin: 1.5rem 1rem;" |- @@ -48,31 +47,18 @@ Mozilla maintains three recommended configurations for servers using TLS. Pick t | style="text-align: center;" | 12.1 |- | style="color:orange;" | '''Intermediate''' -| style="text-align: center;" | 27 +| style="text-align: center;" | 31.3.0 | style="text-align: center;" | 4.4.2 -| style="text-align: center;" | 31 -| style="text-align: center;" | 12 -| style="text-align: center;" | 11 (Win7) -| style="text-align: center;" | 8u31 -| style="text-align: center;" | 1.0.1 +| style="text-align: center;" | 49 +| style="text-align: center;" | 15 (Win10) +| style="text-align: center;" | 11 (Win10) +| style="text-align: center;" | 8u161 +| style="text-align: center;" | 1.0.1l | style="text-align: center;" | 20 | style="text-align: center;" | 9 -|- -| style="color:gray;" | '''Old''' -| style="text-align: center;" | 1 -| style="text-align: center;" | 2.3 -| style="text-align: center;" | 1 -| style="text-align: center;" | 12 -| style="text-align: center;" | 8 (WinXP) -| style="text-align: center;" | 6 -| style="text-align: center;" | 0.9.8 -| style="text-align: center;" | 5 -| style="text-align: center;" | 1 |} -

The ordering of cipher suites in the Old configuration is very important, as it determines the priority with which algorithms are selected.

- -

OpenSSL will ignore cipher suites it doesn't understand, so always use the full set of cipher suites below, in their recommended order. The use of the Old configuration with modern versions of OpenSSL may require custom builds with support for deprecated ciphers.

+

OpenSSL will ignore cipher suites it doesn't understand, so always use the full set of cipher suites below in their recommended order.

Different libraries support different cipher suites and refer to them by different names. Mozilla maintains a list of [[Security/Cipher Suites|all known cipher suites]] and their corresponding names.


@@ -105,7 +91,7 @@ For services with clients that support TLS 1.3 and don't need backward compatibi

For services that don't need compatibility with legacy clients such as Windows XP or old versions of OpenSSL. This is the recommended configuration for the vast majority of services, as it is highly secure and compatible with nearly every client released in the last five (or more) years.

* Cipher suites (TLS 1.3): '''TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256''' -* Cipher suites (TLS 1.2): '''ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305''' +* Cipher suites (TLS 1.2): '''ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305''' * Protocols: '''TLS 1.2, TLS 1.3''' * TLS curves: '''X25519, prime256v1, secp384r1''' * Certificate type: '''ECDSA (P-256)''' (recommended), or '''RSA (2048 bits)''' @@ -125,9 +111,6 @@ For services with clients that support TLS 1.3 and don't need backward compatibi 0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD 0xCC,0xA9 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD 0xCC,0xA8 - ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD -0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD -0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD -0xCC,0xAA - DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD * Rationale: @@ -136,70 +119,16 @@ For services with clients that support TLS 1.3 and don't need backward compatibi ** ECDSA certificates are recommended over RSA certificates, as they allow the use of ECDHE with Windows 7 clients using Internet Explorer 11, as well as allow connections from IE11 on Windows Server 2008 R2 ** The cipher suites are all strong and so we allow the client to choose, as they will know best if they have support for hardware-accelerated AES ** Windows XP (including all embedded versions) are no longer supported by Microsoft, eliminating the need for many older protocols and ciphers +** DHE-RSA-* ciphers DHE-RSA-AES128-GCM-SHA256, DHE-RSA-AES256-GCM-SHA384, and DHE-RSA-CHACHA20-POLY1305 are excluded due to being more computationally expensive than ECDHE, and being more vulnerable to resource exhaustion attacks such as the D(HE)at attack (CVE-2002-20001). DHE-RSA-* ciphers were previously included to support limitations of IE11 on Windows 7. ** Administrators needing to provide access to [https://www.ssllabs.com/ssltest/viewClient.html?name=IE&version=11&platform=Win%207&key=36 IE 11 on Windows Server 2008 R2] and who are unable to switch to or add ECDSA certificates can add TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ** While the goal is to support a broad range of clients, we reasonably disable a number of ciphers that have little support (such as ARIA, Camellia, 3DES, and SEED) ** 90 days is the recommended maximum certificate lifespan, to encourage certificate issuance automation -== '''Old''' backward compatibility == - -This configuration is compatible with a number of very old clients, and should be used only as a last resort. - -* Cipher suites (TLS 1.3): '''TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256''' -* Cipher suites (TLS 1.0 - 1.2): '''ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA''' -* Protocols: '''TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3''' -* TLS curves: '''X25519, prime256v1, secp384r1''' -* Certificate type: '''RSA (2048-bits)''' -* Certificate curve: '''None''' -* DH parameter size: '''1024''' (generated with openssl dhparam 1024) -* HSTS: '''max-age=63072000''' (two years) -* Certificate lifespan: '''90 days''' (recommended) to '''366 days''' -* Cipher preference: '''server chooses''' - - -
-0x13,0x01  -  TLS_AES_128_GCM_SHA256         TLSv1.3  Kx=any   Au=any    Enc=AESGCM(128)             Mac=AEAD
-0x13,0x02  -  TLS_AES_256_GCM_SHA384         TLSv1.3  Kx=any   Au=any    Enc=AESGCM(256)             Mac=AEAD
-0x13,0x03  -  TLS_CHACHA20_POLY1305_SHA256   TLSv1.3  Kx=any   Au=any    Enc=CHACHA20/POLY1305(256)  Mac=AEAD
-0xC0,0x2B  -  ECDHE-ECDSA-AES128-GCM-SHA256  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AESGCM(128)             Mac=AEAD
-0xC0,0x2F  -  ECDHE-RSA-AES128-GCM-SHA256    TLSv1.2  Kx=ECDH  Au=RSA    Enc=AESGCM(128)             Mac=AEAD
-0xC0,0x2C  -  ECDHE-ECDSA-AES256-GCM-SHA384  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AESGCM(256)             Mac=AEAD
-0xC0,0x30  -  ECDHE-RSA-AES256-GCM-SHA384    TLSv1.2  Kx=ECDH  Au=RSA    Enc=AESGCM(256)             Mac=AEAD
-0xCC,0xA9  -  ECDHE-ECDSA-CHACHA20-POLY1305  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=CHACHA20/POLY1305(256)  Mac=AEAD
-0xCC,0xA8  -  ECDHE-RSA-CHACHA20-POLY1305    TLSv1.2  Kx=ECDH  Au=RSA    Enc=CHACHA20/POLY1305(256)  Mac=AEAD
-0x00,0x9E  -  DHE-RSA-AES128-GCM-SHA256      TLSv1.2  Kx=DH    Au=RSA    Enc=AESGCM(128)             Mac=AEAD
-0x00,0x9F  -  DHE-RSA-AES256-GCM-SHA384      TLSv1.2  Kx=DH    Au=RSA    Enc=AESGCM(256)             Mac=AEAD
-0xCC,0xAA  -  DHE-RSA-CHACHA20-POLY1305      TLSv1.2  Kx=DH    Au=RSA    Enc=CHACHA20/POLY1305(256)  Mac=AEAD
-0xC0,0x23  -  ECDHE-ECDSA-AES128-SHA256      TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AES(128)                Mac=SHA256
-0xC0,0x27  -  ECDHE-RSA-AES128-SHA256        TLSv1.2  Kx=ECDH  Au=RSA    Enc=AES(128)                Mac=SHA256
-0xC0,0x09  -  ECDHE-ECDSA-AES128-SHA         TLSv1    Kx=ECDH  Au=ECDSA  Enc=AES(128)                Mac=SHA1
-0xC0,0x13  -  ECDHE-RSA-AES128-SHA           TLSv1    Kx=ECDH  Au=RSA    Enc=AES(128)                Mac=SHA1
-0xC0,0x24  -  ECDHE-ECDSA-AES256-SHA384      TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AES(256)                Mac=SHA384
-0xC0,0x28  -  ECDHE-RSA-AES256-SHA384        TLSv1.2  Kx=ECDH  Au=RSA    Enc=AES(256)                Mac=SHA384
-0xC0,0x0A  -  ECDHE-ECDSA-AES256-SHA         TLSv1    Kx=ECDH  Au=ECDSA  Enc=AES(256)                Mac=SHA1
-0xC0,0x14  -  ECDHE-RSA-AES256-SHA           TLSv1    Kx=ECDH  Au=RSA    Enc=AES(256)                Mac=SHA1
-0x00,0x67  -  DHE-RSA-AES128-SHA256          TLSv1.2  Kx=DH    Au=RSA    Enc=AES(128)                Mac=SHA256
-0x00,0x6B  -  DHE-RSA-AES256-SHA256          TLSv1.2  Kx=DH    Au=RSA    Enc=AES(256)                Mac=SHA256
-0x00,0x9C  -  AES128-GCM-SHA256              TLSv1.2  Kx=RSA   Au=RSA    Enc=AESGCM(128)             Mac=AEAD
-0x00,0x9D  -  AES256-GCM-SHA384              TLSv1.2  Kx=RSA   Au=RSA    Enc=AESGCM(256)             Mac=AEAD
-0x00,0x3C  -  AES128-SHA256                  TLSv1.2  Kx=RSA   Au=RSA    Enc=AES(128)                Mac=SHA256
-0x00,0x3D  -  AES256-SHA256                  TLSv1.2  Kx=RSA   Au=RSA    Enc=AES(256)                Mac=SHA256
-0x00,0x2F  -  AES128-SHA                     SSLv3    Kx=RSA   Au=RSA    Enc=AES(128)                Mac=SHA1
-0x00,0x35  -  AES256-SHA                     SSLv3    Kx=RSA   Au=RSA    Enc=AES(256)                Mac=SHA1
-0x00,0x0A  -  DES-CBC3-SHA                   SSLv3    Kx=RSA   Au=RSA    Enc=3DES(168)               Mac=SHA1
-
- -* Rationale: -** Take a hard look at your infrastructure needs before using this configuration; it is intended for special use cases only -** If possible, use this configuration only for endpoints that require it, segregating it from other traffic -** SSLv3 has been disabled entirely, ending support for older Windows XP SP2 clients. Users requiring support for Windows XP SP2 may use [[Security/Archive/Server Side TLS 4.0|previous versions]] of this configuration, with the caveat that SSLv3 is no longer safe to use -** This configuration requires custom builds to work with modern versions of OpenSSL, using enable-ssl3, enable-ssl3-method, enable-deprecated, and enable-weak-ssl-ciphers -** Most ciphers that are not clearly broken and dangerous to use are supported - = JSON version of the recommendations = -

Mozilla also maintains [https://ssl-config.mozilla.org/guidelines/5.7.json these recommendations] in JSON format, for automated system configuration. This location is versioned and permanent, and can be referenced in scripts and tools. The file will not change, to avoid breaking tools when we update the recommendations.

+

Mozilla also maintains [https://ssl-config.mozilla.org/guidelines/6.0.json these recommendations] in JSON format, for automated system configuration. This location is versioned and permanent, and can be referenced in scripts and tools. The file will not change, to avoid breaking tools when we update the recommendations.

-

We also maintain a [https://ssl-config.mozilla.org/guidelines/latest.json rolling version] of these recommendations, with the caveat that they may change '''without warning''' and '''without providing backwards compatibility'''. As it may break things if you use it to automatically configure your servers without review, we recommend you use the [https://ssl-config.mozilla.org/guidelines/5.7.json version-specific file] instead.

+

We also maintain a [https://ssl-config.mozilla.org/guidelines/latest.json rolling version] of these recommendations, with the caveat that they may change '''without warning''' and '''without providing backwards compatibility'''. As it may break things if you use it to automatically configure your servers without review, we recommend you use the [https://ssl-config.mozilla.org/guidelines/6.0.json version-specific file] instead.

= Version History = {| class="wikitable" @@ -208,6 +137,16 @@ This configuration is compatible with a number of very old clients, and should b ! Editor ! Changes |- +| style="text-align: center;" | 6.0 +| style="text-align: center;" | Glenn Strauss +| Remove Old configuration +|- +| style="text-align: center;" | 5.8 +| style="text-align: center;" | Glenn Strauss +| Remove kDHE ciphers from Intermediate and Old + Change Old dhParamSize from 1024 to 2048 + Change Old to use ffdhe2048 instead of locally generated dhparams +|- | style="text-align: center;" | 5.7 | style="text-align: center;" | Gene Wood | Add DHE-RSA-CHACHA20-POLY1305 cipher to the Intermediate configuration