Cloudflare で設定できるエッジ証明書まとめ



# エッジ証明書

主に、以下の証明書タイプがあります。
例えば、手動で更新したくない場合は ユニバーサルかアドバンストが選択肢になり、自組織に紐づいた EV / OV 証明書を使いたい場合は、カスタム証明書になります。

|                                           | [Universal Certificate](https://developers.cloudflare.com/ssl/edge-certificates/universal-ssl) | [Advanced Certificate](https://developers.cloudflare.com/ssl/edge-certificates/advanced-certificate-manager)<br />（旧 Dedicated Certificate） | [Custom Certificate](https://developers.cloudflare.com/ssl/edge-certificates/custom-certificates) |
| ----------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Provision                                 | Cloudflare                                                   | Cloudflare                                                   | User                                                         |
| Auto-renew                                | Yes                                                          | Yes                                                          | Manual（通知あり）                                           |
| Certificate Authority                     | DigiCert<br />Let's Encrypt                                  | DigiCert<br />Let's Encrypt                                  | Any                                                          |
| Host                                      | root (`example.com`)<br />first-level subdomains (`*.example.com`)のみ | root (`example.com`)<br />first-level subdomains (`*.example.com`)<br />second, third, and fourth-level subdomains ( `dev.www.example.com` , `app3.dev.www.example.com` )などの任意のホスト名 | root (`example.com`)<br />first-level subdomains (`*.example.com`)<br />second, third, and fourth-level subdomains ( `dev.www.example.com` , `app3.dev.www.example.com` )などの任意のホスト名 |
| Domain Validation (DV)                  | -                                                           | -                                                           | Yes                                                          |
| Organization Validated (OV)                     | Yes (Cloudflare, Inc.)                                                           | Yes (Cloudflare, Inc.)                                                           | Yes (Your Org)                                                          |
| Extended Validated (EV)               | No                                                           | No                                                           | Yes                                                          |
| Cost & Plan                               | Free for All Plan                                            | - $10/month add-on per zone (Free, Pro, and Business)<br />- Ask for Quote (Enterprise) | - One Cert per Domain (for Business and Enterprise)<br />- More Certs : Ask for Quote (Enterprise) |

# 適用順位

複数の証明書が存在する場合の適用順位について、以下に詳細の記述がありますが、

> [Certificate and hostname priority · Cloudflare SSL docs](https://developers.cloudflare.com/ssl/ssl-tls/certificate-and-hostname-priority)

概要は以下の通りです。

1. ホスト名指定チェック
   - ワイルドカードよりも、明示的にホスト名の指定がある証明書が優先されます
2. 証明書タイプチェック
   - 1 が同じ証明書がある場合、Custom (Legacy) --> Custom (Modern) --> Advanced --> Universal の順で優先されます。
3. 発行日チェック
   - 1 も 2 も同じ証明書がある場合、新しい証明書が優先されます。

# Cipher Control

ACM の機能が有効化済みであれば、ゾーンまたはホスト名に対して Cipher Control が可能です。

>[Cipher suites · Cloudflare SSL docs](https://developers.cloudflare.com/ssl/ssl-tls/cipher-suites#restricting-at-edge)
>With [Advanced Certificate Manager (ACM)](https://developers.cloudflare.com/ssl/edge-certificates/advanced-certificate-manager), you can restrict connections to specific cipher suites.

ただし、TLS 1.3 に関して Cipher はハードコード実装のため、Cipher Control は効きません。
TLS 1.2 以下の場合のみ、Cipher Control が有効です。

```shell
export EMAIL='YOUR_EMAIL'
export APIKEY='YOUR_APIKEY'
export ZONE_ID='YOUR_ZONE_ID'

% curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/ciphers" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key:$APIKEY" \
     -H "Content-Type: application/json" \
--data '{"value":["AEAD-AES128-GCM-SHA256"]}'
{"success":false,"errors":[{"code":1007,"message":"Invalid value for zone setting ciphers"}],"messages":[],"result":null}

% curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/ciphers" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key:$APIKEY" \
     -H "Content-Type: application/json" \
--data '{"value":["AEAD-AES256-GCM-SHA384"]}'
{"success":false,"errors":[{"code":1007,"message":"Invalid value for zone setting ciphers"}],"messages":[],"result":null}

%  curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/ciphers" \
     -H "X-Auth-Email: $EMAIL" \
     -H "X-Auth-Key:$APIKEY" \
     -H "Content-Type: application/json" \
--data '{"value":["AEAD-CHACHA20-POLY1305-SHA256"]}'
{"success":false,"errors":[{"code":1007,"message":"Invalid value for zone setting ciphers"}],"messages":[],"result":null}
```

# 参考

- [Edge Certificates: Management – Cloudflare Help Center](https://support.cloudflare.com/hc/en-us/sections/360004101391-Edge-Certificates-Management)