Skip to content

Commit b5febb4

Browse files
[SSL] Clarify TLS 1.3 cipher names (#18425)
* Fix TLS 1.3 hex values in supported-cipher-suites table * Spell out differences in naming and fix link to RFC * Audit and add notes for all occurrences of AEAD- * Apply suggestion from code review Co-authored-by: Jun Lee <[email protected]> --------- Co-authored-by: Jun Lee <[email protected]>
1 parent fa1880b commit b5febb4

File tree

7 files changed

+39
-12
lines changed

7 files changed

+39
-12
lines changed

src/content/docs/spectrum/reference/configuration-options.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,4 @@ The cipher suites below are ordered based on how they appear in the ClientHello,
134134
| AES128-SHA ||||
135135
| AES256-SHA ||||
136136

137-
[^1]: Although TLS 1.3 uses the same cipher suite space as previous versions of TLS, TLS 1.3 cipher suites are defined differently, only specifying the symmetric ciphers, and cannot be used for TLS 1.2. Similarly, TLS 1.2 and lower cipher suites cannot be used with TLS 1.3 (IETF TLS 1.3 draft 21). BoringSSL also hard-codes cipher preferences in this order for TLS 1.3.
137+
[^1]: Although TLS 1.3 uses the same cipher suite space as previous versions of TLS, TLS 1.3 cipher suites are defined differently, only specifying the symmetric ciphers, and cannot be used for TLS 1.2. Similarly, TLS 1.2 and lower cipher suites cannot be used with TLS 1.3 ([RFC 8446](https://www.rfc-editor.org/rfc/rfc8446.html)). BoringSSL also hard-codes cipher preferences in this order for TLS 1.3. Refer to [TLS 1.3 cipher suites](/ssl/origin-configuration/cipher-suites/#tls-13-cipher-suites) for details.

src/content/docs/ssl/edge-certificates/additional-options/cipher-suites/compliance-status.mdx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Recommended cipher suites for compliance with the [Payment Card Industry Data Se
2323

2424
* Cipher suites:
2525

26-
`AEAD-AES128-GCM-SHA256`, `AEAD-AES256-GCM-SHA384`, `AEAD-CHACHA20-POLY1305-SHA256`, `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`
26+
`AEAD-AES128-GCM-SHA256`[^1], `AEAD-AES256-GCM-SHA384`[^2], `AEAD-CHACHA20-POLY1305-SHA256`[^3], `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`
2727

2828
* Formatted array to copy:
2929

@@ -46,3 +46,7 @@ Recommended cipher suites for compliance with the [Federal Information Processin
4646
```txt
4747
["AES128-GCM-SHA256", "AES128-SHA", "AES128-SHA256", "AES256-SHA", "AES256-SHA256", "DES-CBC3-SHA", "ECDHE-ECDSA-AES128-GCM-SHA256", "ECDHE-ECDSA-AES128-SHA", "ECDHE-ECDSA-AES128-SHA256", "ECDHE-ECDSA-AES256-GCM-SHA384", "ECDHE-ECDSA-AES256-SHA384", "ECDHE-RSA-AES128-GCM-SHA256", "ECDHE-RSA-AES128-SHA", "ECDHE-RSA-AES128-SHA256", "ECDHE-RSA-AES256-GCM-SHA384", "ECDHE-RSA-AES256-SHA", "ECDHE-RSA-AES256-SHA384"]
4848
```
49+
50+
[^1]: Same as `TLS_AES_128_GCM_SHA256`. Refer to [TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/#tls-13) for details.
51+
[^2]: Same as `TLS_AES_256_GCM_SHA384`. Refer to [TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/#tls-13) for details.
52+
[^3]: Same as `TLS_CHACHA20_POLY1305_SHA256`. Refer to [TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/#tls-13) for details.

src/content/docs/ssl/edge-certificates/additional-options/cipher-suites/index.mdx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This section covers cipher suites used in connections between clients -- such as
2020

2121
Cloudflare maintains a [public repository of our SSL/TLS configurations](https://github.com/cloudflare/sslconfig) on GitHub, where you can find changes in the commit history.
2222

23-
[RC4 cipher suites](https://blog.cloudflare.com/end-of-the-road-for-rc4/) or [SSLv3](https://blog.cloudflare.com/sslv3-support-disabled-by-default-due-to-vulnerability/) are no longer supported.
23+
[RC4 cipher suites](https://blog.cloudflare.com/end-of-the-road-for-rc4/) or [SSLv3](https://blog.cloudflare.com/sslv3-support-disabled-by-default-due-to-vulnerability/) are no longer supported.
2424
:::
2525

2626
## Cipher suites and edge certificates
@@ -49,6 +49,15 @@ Each cipher suite relates to a specific minimum protocol that it supports. This
4949

5050
<Render file="tls-13-cipher-limitations" />
5151

52+
Cloudflare may return the following names for TLS 1.3 cipher suites. This is how they map to [RFC 8446](https://www.rfc-editor.org/rfc/rfc8446.html) names:
53+
54+
| Cloudflare | RFC 8446 |
55+
| ------------------------------ | -----------------------------------|
56+
| `AEAD-AES128-GCM-SHA256` | `TLS_AES_128_GCM_SHA256` |
57+
| `AEAD-AES256-GCM-SHA384` | `TLS_AES_256_GCM_SHA384` |
58+
| `AEAD-CHACHA20-POLY1305-SHA256` | `TLS_CHACHA20_POLY1305_SHA256` |
59+
60+
5261
## Resources
5362

5463
<DirectoryListing />

src/content/docs/ssl/edge-certificates/additional-options/cipher-suites/recommendations.mdx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Offers the best security and performance, limiting your range of clients to mode
2323

2424
* Cipher suites:
2525

26-
`AEAD-AES128-GCM-SHA256`, `AEAD-AES256-GCM-SHA384`, `AEAD-CHACHA20-POLY1305-SHA256`,`ECDHE-ECDSA-AES128-GCM-SHA256`, `ECDHE-ECDSA-CHACHA20-POLY1305`, `ECDHE-RSA-AES128-GCM-SHA256`, `ECDHE-RSA-CHACHA20-POLY1305`, `ECDHE-ECDSA-AES256-GCM-SHA384`, `ECDHE-RSA-AES256-GCM-SHA384`
26+
`AEAD-AES128-GCM-SHA256`[^1], `AEAD-AES256-GCM-SHA384`[^2], `AEAD-CHACHA20-POLY1305-SHA256`[^3],`ECDHE-ECDSA-AES128-GCM-SHA256`, `ECDHE-ECDSA-CHACHA20-POLY1305`, `ECDHE-RSA-AES128-GCM-SHA256`, `ECDHE-RSA-CHACHA20-POLY1305`, `ECDHE-ECDSA-AES256-GCM-SHA384`, `ECDHE-RSA-AES256-GCM-SHA384`
2727

2828
* Formatted array to copy:
2929

@@ -58,3 +58,7 @@ Includes all cipher suites that Cloudflare supports today. Broadest compatibilit
5858
`AEAD-AES128-GCM-SHA256`, `AEAD-AES256-GCM-SHA384`, `AEAD-CHACHA20-POLY1305-SHA256`, `ECDHE-ECDSA-AES128-GCM-SHA256`, `ECDHE-ECDSA-CHACHA20-POLY1305`, `ECDHE-RSA-AES128-GCM-SHA256`, `ECDHE-RSA-CHACHA20-POLY1305`, `ECDHE-ECDSA-AES256-GCM-SHA384`, `ECDHE-RSA-AES256-GCM-SHA384`, `ECDHE-ECDSA-AES128-SHA256`, `ECDHE-RSA-AES128-SHA256`, `ECDHE-ECDSA-AES256-SHA384`, `ECDHE-RSA-AES256-SHA384`, `ECDHE-ECDSA-AES128-SHA`, `ECDHE-RSA-AES128-SHA`, `AES128-GCM-SHA256`, `AES128-SHA256`, `AES128-SHA`, `ECDHE-RSA-AES256-SHA`, `AES256-GCM-SHA384`, `AES256-SHA256`, `AES256-SHA`, `DES-CBC3-SHA`
5959

6060
To reset your option to the default, [use an empty array](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/#reset-to-default-values).
61+
62+
[^1]: Same as `TLS_AES_128_GCM_SHA256`. Refer to [TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/#tls-13) for details.
63+
[^2]: Same as `TLS_AES_256_GCM_SHA384`. Refer to [TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/#tls-13) for details.
64+
[^3]: Same as `TLS_CHACHA20_POLY1305_SHA256`. Refer to [TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/#tls-13) for details.

src/content/docs/ssl/edge-certificates/additional-options/cipher-suites/supported-cipher-suites.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ Cloudflare supports the following cipher suites by default. If needed, you can [
3333
| AES256-SHA256 | TLS 1.2 | Legacy | \[0x3d] | TLS\_RSA\_WITH\_AES\_256\_CBC\_SHA256 |
3434
| AES256-SHA | TLS 1.0 | Legacy | \[0x35] | TLS\_RSA\_WITH\_AES\_256\_CBC\_SHA |
3535
| DES-CBC3-SHA | TLS 1.0 | Legacy | \[0x0a] | TLS\_RSA\_WITH\_3DES\_EDE\_CBC\_SHA |
36-
| AEAD-AES128-GCM-SHA256 \* | TLS 1.3 | Modern | {0x13,0x01} | TLS\_AES\_128\_GCM\_SHA256 |
37-
| AEAD-AES256-GCM-SHA384 \* | TLS 1.3 | Modern | {0x13,0x02} | TLS\_AES\_256\_GCM\_SHA384 |
38-
| AEAD-CHACHA20-POLY1305-SHA256 \* | TLS 1.3 | Modern | {0x13,0x03} | TLS\_CHACHA20\_POLY1305\_SHA256 |
36+
| AEAD-AES128-GCM-SHA256 \* | TLS 1.3 | Modern | \{0x13,0x01} | TLS\_AES\_128\_GCM\_SHA256 |
37+
| AEAD-AES256-GCM-SHA384 \* | TLS 1.3 | Modern | \{0x13,0x02} | TLS\_AES\_256\_GCM\_SHA384 |
38+
| AEAD-CHACHA20-POLY1305-SHA256 \* | TLS 1.3 | Modern | \{0x13,0x03} | TLS\_CHACHA20\_POLY1305\_SHA256 |
3939

4040
:::note[* TLS 1.3 minimum protocol]
4141

4242
Ciphers `AEAD-AES128-GCM-SHA256`, `AEAD-AES256-GCM-SHA384`, and `AEAD-CHACHA20-POLY1305-SHA256` are automatically supported by your zone if you [enable TLS 1.3](/ssl/edge-certificates/additional-options/tls-13/#enable-tls-13).
4343

44-
TLS 1.3 uses the same cipher suite space as previous versions of TLS, but defines these cipher suites differently. TLS 1.3 only specifies the symmetric ciphers and cannot be used for TLS 1.2. Similarly, TLS 1.2 and lower cipher suites cannot be used with TLS 1.3 (IETF TLS 1.3 draft 21). BoringSSL also hard-codes cipher preferences in this order for TLS 1.3.
44+
TLS 1.3 uses the same cipher suite space as previous versions of TLS, but defines these cipher suites differently. TLS 1.3 only specifies the symmetric ciphers and cannot be used for TLS 1.2. Similarly, TLS 1.2 and lower cipher suites cannot be used with TLS 1.3 ([RFC 8446](https://www.rfc-editor.org/rfc/rfc8446.html)). BoringSSL also hard-codes cipher preferences in this order for TLS 1.3.
4545
:::

src/content/docs/ssl/origin-configuration/cipher-suites.mdx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ The list order is based on how the cipher suites appear in the [ClientHello](htt
3838
| AES256-SHA |||||
3939
| DES-CBC3-SHA |||||
4040

41+
### TLS 1.3 cipher suites
42+
43+
Although TLS 1.3 uses the same cipher suite space as previous versions of TLS, TLS 1.3 cipher suites are defined differently, only specifying the symmetric ciphers, and cannot be used for TLS 1.2 ([RFC 8446](https://www.rfc-editor.org/rfc/rfc8446.html)).
44+
45+
Similarly, TLS 1.2 and lower cipher suites cannot be used with TLS 1.3. BoringSSL also hard-codes cipher preferences in the order above for TLS 1.3.
46+
47+
Based on BoringSSL, Cloudflare system will return the names listed above. However, the corresponding names defined in [RFC 8446](https://www.rfc-editor.org/rfc/rfc8446.html) are the following:
48+
49+
- `TLS_AES_128_GCM_SHA256`
50+
- `TLS_AES_256_GCM_SHA384`
51+
- `TLS_CHACHA20_POLY1305_SHA256`
52+
4153
## Match on origin
4254

4355
Cloudflare will present the cipher suites to your origin and your server will select whichever cipher suite it prefers.
@@ -51,4 +63,4 @@ ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RS
5163
ssl_prefer_server_ciphers on;
5264
```
5365

54-
[^1]: *Although TLS 1.3 uses the same cipher suite space as previous versions of TLS, TLS 1.3 cipher suites are defined differently, only specifying the symmetric ciphers, and cannot be used for TLS 1.2. Similarly, TLS 1.2 and lower cipher suites cannot be used with TLS 1.3 (IETF TLS 1.3 draft 21). BoringSSL also hard-codes cipher preferences in this order for TLS 1.3.*
66+
[^1]: Refer to [TLS 1.3 cipher suites](#tls-13-cipher-suites) for details.

src/content/partials/ssl/tls-1.3-cipher-limitations.mdx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,4 @@
33

44
---
55

6-
You cannot set specific TLS 1.3 ciphers. Instead, you can enable [TLS 1.3](/ssl/edge-certificates/additional-options/tls-13/#enable-tls-13) for your entire zone and Cloudflare will use [all applicable TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/supported-cipher-suites/).
7-
8-
In combination with this, you can still [disable weak cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/) for TLS 1.0-1.2.
6+
You cannot set specific TLS 1.3 ciphers. Instead, you can enable [TLS 1.3](/ssl/edge-certificates/additional-options/tls-13/#enable-tls-13) for your entire zone and Cloudflare will use [all applicable TLS 1.3 cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/supported-cipher-suites/). In combination with this, you can still [disable weak cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/) for TLS 1.0-1.2.

0 commit comments

Comments
 (0)