Skip to content

Commit 65f17bc

Browse files
[SSL] Cipher suites - add UI steps and clarify SaaS availability (#20739)
* Unbundle cipher restiction on SaaS provider own zone vs CHs * Separate API steps and make customize-cipher-suites a folder * Create page for UI steps and add SaaS callout as partial * Adjust intro to separate guides and fill in UI requirements * Fill in dashboard instructions and frame conditions * Adjust recommendations page title to match UI * Use Render and Details, and link out to restrict arrays to api.mdx * Optimize dashboard.mdx for docs-in-dash * Apply suggestions from code review Co-authored-by: Jun Lee <[email protected]> * Better separate different names for different selection modes --------- Co-authored-by: Jun Lee <[email protected]>
1 parent 34326c8 commit 65f17bc

File tree

9 files changed

+135
-84
lines changed

9 files changed

+135
-84
lines changed

src/content/docs/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/enforce-mtls.mdx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,19 @@ While TLS 1.3 is the most recent and secure version, it is not supported by some
5353

5454
## Cipher suites
5555

56-
For security and regulatory reasons, you may want to only allow connections from certain cipher suites. Cloudflare provides recommended values and full cipher suite reference in our [Cipher suites documentation](/ssl/edge-certificates/additional-options/cipher-suites/).
56+
For security and regulatory reasons, you may want to only allow connections from certain cipher suites. Cloudflare provides recommended values and full cipher suite reference in our [Cipher suites documentation](/ssl/edge-certificates/additional-options/cipher-suites/#resources).
5757

5858

59-
<Details header="Restrict cipher suites for zone">
60-
61-
Refer to [Edit zone setting](/api/resources/zones/subresources/settings/methods/edit/) and use `ciphers` as the setting name in the URI path.
59+
<Details header="Restrict cipher suites for your zone">
6260

61+
Refer to [Customize cipher suites - SSL/TLS](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/).
6362

6463
</Details>
6564

6665

6766
<Details header="Restrict cipher suites for custom hostname">
6867

69-
Refer to [SSL properties of a custom hostname](/api/resources/custom_hostnames/methods/edit/).
68+
In the API documentation, refer to [SSL properties of a custom hostname](/api/resources/custom_hostnames/methods/edit/).
7069

7170
<Render file="edit-custom-hostname-api" params={{ one: "When making the request," }} />
7271

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

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,43 +9,39 @@ head:
99

1010
---
1111

12-
import { Render } from "~/components"
12+
import { Render, Details } from "~/components"
1313

1414
Consider the following recommendations on custom [cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/) for when your organization needs to comply with regulatory standards.
1515

1616
Refer to [Customize cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/) to learn how to specify cipher suites at zone level or per hostname.
1717

18+
:::caution
1819
Also [enable TLS 1.3](/ssl/edge-certificates/additional-options/tls-13/#enable-tls-13) on your zone and, when opting for [PCI DSS](#pci-dss), make sure to up your [Minimum TLS version](/ssl/edge-certificates/additional-options/minimum-tls/) to `1.2`. Refer to [Cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/) and [TLS protocols](/ssl/reference/protocols/) to learn more.
20+
:::
1921

2022
## PCI DSS
2123

2224
Recommended cipher suites for compliance with the [Payment Card Industry Data Security Standard (PCI DSS)](https://www.pcisecuritystandards.org/standards/pci-dss/). Enhances payment card data security.
2325

24-
* Cipher suites:
26+
<Details header="Cipher suites list">
2527

2628
`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`
2729

28-
* Formatted array to copy:
30+
</ Details>
2931

30-
<Render file="ciphers-tls-13-array-callout" />
31-
32-
```txt
33-
["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"]
34-
```
32+
<Render file="cipher-suites-api-linkout" />
3533

3634
## FIPS-140-2
3735

3836
Recommended cipher suites for compliance with the [Federal Information Processing Standard (140-2)](https://csrc.nist.gov/pubs/fips/140-2/upd2/final). Used to approve cryptographic modules.
3937

40-
* Cipher suites:
38+
<Details header="Cipher suites list">
4139

4240
`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`
4341

44-
* Formatted array to copy:
42+
</ Details>
4543

46-
```txt
47-
["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"]
48-
```
44+
<Render file="cipher-suites-api-linkout" />
4945

5046
[^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.
5147
[^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.
Lines changed: 11 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,38 @@
11
---
2-
title: Customize cipher suites
2+
title: Customize cipher suites via API
33
pcx_content_type: how-to
44
sidebar:
5-
order: 1
6-
head:
7-
- tag: title
8-
content: Customize cipher suites
9-
5+
order: 2
6+
label: Use the API
107
---
118

12-
import { Render, TabItem, Tabs } from "~/components"
13-
14-
With [Advanced Certificate Manager](/ssl/edge-certificates/advanced-certificate-manager/) or within [Cloudflare for SaaS](/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/), you can restrict connections between Cloudflare and clients — such as your visitor's browser — to specific [cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/).
15-
16-
You may want to do this to follow specific [recommendations](/ssl/edge-certificates/additional-options/cipher-suites/recommendations/), to [disable weak cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/troubleshooting/#ssl-labs-weak-ciphers-report), or to comply with [industry standards](/ssl/edge-certificates/additional-options/cipher-suites/compliance-status/).
9+
import { Render, TabItem, Tabs } from "~/components";
1710

18-
Customizing cipher suites will not lead to any downtime in your SSL/TLS protection.
11+
<Render file="cipher-suites-definition" />
1912

2013
:::note
21-
This documentation only refers to connections [between clients and the Cloudflare network](/ssl/concepts/#edge-certificate). For connections between Cloudflare and your origin server, refer to [Origin server > Cipher suites](/ssl/origin-configuration/cipher-suites/).
14+
<Render file="cipher-suites-saas-linkout" />
2215
:::
2316

24-
## How it works
25-
26-
Custom cipher suites is a hostname-level setting, which implies that:
27-
28-
* When you customize cipher suites for a [zone](/fundamentals/setup/accounts-and-zones/#zones), this will affect all hostnames within that zone.
29-
* The configuration is applicable to all edge certificates used to connect to the hostname(s), regardless of [certificate type](/ssl/edge-certificates/) (universal, advanced, or custom).
30-
* If you need to use a per-hostname cipher suite customization, you must ensure that the hostname is specified on the certificate.
31-
32-
### Scope
33-
34-
Currently, you can only customize cipher suites when using the API:
35-
36-
* [Zone](/api/resources/zones/subresources/settings/methods/edit/) (using `ciphers` as the setting name in the URI path)
37-
* [Per-hostname](/api/resources/hostnames/subresources/settings/subresources/tls/methods/update/) (regular zones only)
38-
* [Custom hostname](/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/enforce-mtls/#cipher-suites) (Cloudflare for SaaS zones only)
39-
40-
### Settings priority and ciphers order
41-
42-
Cloudflare uses the [hostname priority logic](/ssl/reference/certificate-and-hostname-priority/) to determine which setting to apply.
43-
44-
ECDSA cipher suites are prioritized over RSA, and Cloudflare preserves the specified cipher suites in the order they are set. This means that, if both ECDSA and RSA are used, Cloudflare presents the ECDSA ciphers first - in the order they were set - and then the RSA ciphers, also in the order they were set.
45-
46-
## Set up
47-
48-
49-
:::note
50-
For guidance around custom hostnames, refer to [TLS settings - Cloudflare for SaaS](/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/enforce-mtls/#cipher-suites).
51-
:::
52-
53-
### Before you begin
17+
## Before you begin
5418

5519
Note that:
5620

5721
* Cipher suites are used in combination with other [SSL/TLS settings](/ssl/edge-certificates/additional-options/cipher-suites/#related-ssltls-settings).
5822
* 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/).
5923
* Each cipher suite also supports a specific algorithm (RSA or ECDSA) so you should consider the algorithms in use by your edge certificates when making your ciphers selection. You can find this information under each certificate listed in [**SSL/TLS** > **Edge Certificates**](https://dash.cloudflare.com/?to=/:account/:zone/ssl-tls/edge-certificates).
6024
* It is not possible to configure minimum TLS version nor cipher suites for [Cloudflare Pages](/pages/) hostnames.
25+
* If setting up a per-hostname cipher suite customization, make sure that the hostname is specified on the certificate (instead of being covered by a wildcard).
6126
* If you use Windows you might need to adjust the `curl` syntax, refer to [Making API calls on Windows](/fundamentals/api/how-to/make-api-calls/#making-api-calls-on-windows) for further guidance.
6227

63-
### Steps and API examples
28+
## Steps and API examples
6429

6530
1. Decide which cipher suites you want to specify and which ones you want to disable (meaning they will not be included in your selection).
6631

6732
Below you will find samples covering the recommended ciphers [by security level](/ssl/edge-certificates/additional-options/cipher-suites/recommendations/) and [compliance standards](/ssl/edge-certificates/additional-options/cipher-suites/compliance-status/), but you can also refer to the [full list](/ssl/edge-certificates/additional-options/cipher-suites/supported-cipher-suites/) of supported ciphers and customize your choice.
6833

6934
2. Log in to the Cloudflare dashboard and get your Global API Key in [**My Profile** > **API Tokens**](https://dash.cloudflare.com/?to=/:account/profile/api-tokens/).
70-
7135
3. Get the Zone ID from the [Overview page](https://dash.cloudflare.com/?to=/:account/:zone/) of the domain you want to specify cipher suites for.
72-
7336
4. Make an API call to either the [Edit zone setting](/api/resources/zones/subresources/settings/methods/edit/) endpoint or the [Edit TLS setting for hostname](/api/resources/hostnames/subresources/settings/subresources/tls/methods/update/) endpoint, specifying `ciphers` in the URL. List your array of chosen cipher suites in the `value` field.
7437

7538
:::note
@@ -151,7 +114,7 @@ curl --request PATCH \
151114

152115
</TabItem> </Tabs>
153116

154-
## Reset to default values
117+
### Reset to default values
155118

156119
<Tabs> <TabItem label="zone">
157120

@@ -180,4 +143,4 @@ curl --request DELETE \
180143

181144
</TabItem> </Tabs>
182145

183-
For guidance around custom hostnames, refer to [TLS settings - Cloudflare for SaaS](/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/enforce-mtls/#cipher-suites).
146+
<Render file="cipher-suites-saas-linkout" />
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: Customize cipher suites via dashboard
3+
pcx_content_type: how-to
4+
sidebar:
5+
order: 1
6+
label: Use the dashboard
7+
---
8+
9+
import { Render, Details } from "~/components";
10+
11+
<Render file="cipher-suites-definition" />
12+
13+
When configuring cipher suites via dashboard, you can use three different selection modes:
14+
15+
- **By security level**: allows you to select between the predefined [Cloudflare recommendations](/ssl/edge-certificates/additional-options/cipher-suites/recommendations/) (Modern, Compatible, or Legacy).
16+
- **By compliance standard**: allows you to select cipher suites grouped according to [industry standards](/ssl/edge-certificates/additional-options/cipher-suites/compliance-status/) (PCI DSS or FIPS-140-2).
17+
- **Custom**: allows you to individually select the cipher suites you would like to support.
18+
19+
For any of the modes, you should keep in mind the following configuration conditions. If using the **security level** or the **compliance standard** mode, some actions may be blocked and explained referencing these conditions.
20+
21+
<Details header="Configuration conditions">
22+
* Cipher suites are used in combination with other [SSL/TLS settings](/ssl/edge-certificates/additional-options/cipher-suites/#related-ssltls-settings).
23+
* 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/).
24+
* Each cipher suite also supports a specific algorithm (RSA or ECDSA), so you should consider the algorithms in use by your edge certificates when making your ciphers selection. You can find this information under each certificate listed in [**SSL/TLS** > **Edge Certificates**](https://dash.cloudflare.com/?to=/:account/:zone/ssl-tls/edge-certificates).
25+
* It is not possible to configure minimum TLS version nor cipher suites for [Cloudflare Pages](/pages/) hostnames.
26+
</ Details>
27+
28+
## Steps
29+
30+
1. Log in to the [Cloudflare dashboard](https://dash.cloudflare.com/login) and select your account and domain.
31+
2. Go to **SSL/TLS** > **Edge Certificates**.
32+
3. For the **Cipher suites** setting select **Configure**.
33+
4. Choose a mode to select your cipher suites and select **Next**.
34+
5. Select a predefined set of cipher suites or, if you opted for **Custom**, specify which cipher suites you want to allow. Make sure you are aware of how your selection will interact with Minimum TLS version, TLS 1.3, and the certificate algorithm (ECDSA or RSA).
35+
6. Select **Save** to confirm.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: Customize cipher suites
3+
pcx_content_type: how-to
4+
sidebar:
5+
order: 1
6+
head:
7+
- tag: title
8+
content: Customize cipher suites
9+
10+
---
11+
12+
import { Render, TabItem, Tabs, DirectoryListing } from "~/components";
13+
14+
With an [Advanced Certificate Manager](/ssl/edge-certificates/advanced-certificate-manager/) subscription, you can restrict connections between Cloudflare and clients — such as your visitor's browser — to specific [cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/).
15+
16+
You may want to do this to follow specific [recommendations](/ssl/edge-certificates/additional-options/cipher-suites/recommendations/), to [disable weak cipher suites](/ssl/edge-certificates/additional-options/cipher-suites/troubleshooting/#ssl-labs-weak-ciphers-report), or to comply with [industry standards](/ssl/edge-certificates/additional-options/cipher-suites/compliance-status/).
17+
18+
Customizing cipher suites will not lead to any downtime in your SSL/TLS protection.
19+
20+
:::note
21+
This documentation only refers to connections [between clients and the Cloudflare network](/ssl/concepts/#edge-certificate). For connections between Cloudflare and your origin server, refer to [Origin server > Cipher suites](/ssl/origin-configuration/cipher-suites/).
22+
:::
23+
24+
## How it works
25+
26+
Custom cipher suites is a hostname-level setting, which implies that:
27+
28+
* When you customize cipher suites for a zone, this will affect all hostnames within that zone. If you are not familiar with what a Cloudflare zone is, refer to [Fundamentals](/fundamentals/setup/accounts-and-zones/#zones).
29+
* The configuration is applicable to all edge certificates used to connect to the hostname(s), regardless of the [certificate type](/ssl/edge-certificates/) (universal, advanced, or custom).
30+
* If you need to use a per-hostname cipher suite customization, you must ensure that the hostname is specified on the certificate.
31+
32+
## Scope
33+
34+
Currently, you have the following options:
35+
36+
- Set custom cipher suites for a zone: either [via API](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/api/) or [on the dashboard](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/dashboard/).
37+
- Set custom cipher suites per-hostname: only available [via API](/api/resources/hostnames/subresources/settings/subresources/tls/methods/update/). Refer to the [how-to](/ssl/edge-certificates/additional-options/cipher-suites/customize-cipher-suites/api/) for details.
38+
39+
### Cloudflare for SaaS
40+
41+
If you are a SaaS provider looking to restrict cipher suites for connections to your custom hostnames, refer to [TLS settings - Cloudflare for SaaS](/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/enforce-mtls/#cipher-suites).
42+
43+
To restrict cipher suites for connections to your own zone, continue on this guide. In this case, you must also have purchased [Advanced Certificate Manager](/ssl/edge-certificates/advanced-certificate-manager/).
44+
45+
## Settings priority and ciphers order
46+
47+
Cloudflare uses the [hostname priority logic](/ssl/reference/certificate-and-hostname-priority/) to determine which setting to apply.
48+
49+
ECDSA cipher suites are prioritized over RSA, and Cloudflare preserves the specified cipher suites in the order they are set. This means that, if both ECDSA and RSA are used, Cloudflare presents the ECDSA ciphers first - in the order they were set - and then the RSA ciphers, also in the order they were set.

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ title: Cipher suites
33
pcx_content_type: concept
44
sidebar:
55
order: 1
6+
label: About
67
head: []
78
description: Consider information about supported cipher suites, how to meet
89
your security requirements, and how to troubleshoot compatibility and other
910
issues.
1011

1112
---
1213

13-
import { DirectoryListing, Render } from "~/components"
14+
import { DirectoryListing, Render } from "~/components";
1415

1516
<Render file="cipher-suites-definition" /><br />
1617

0 commit comments

Comments
 (0)