-
Cloudflare ダッシュボードを開き、アカウントとドメインを選択します。
-
SSL/TLS > Client Certificates に移動し、Hosts セクションで Edit を選択して、mTLS を有効にする ホスト名を追加します。
ホストの例:
mtls-test.example.com -
Add Certificate を選択します。デフォルトの Certificate Authority は Cloudflare 管理の CA です。
-
必須項目を入力します。次のいずれかを選べます。
- Cloudflare で秘密鍵(通常は Private Certificate と呼ばれます)と Certificate Signing Request(CSR)を生成する(公開証明書を含みます)。
- 独自の秘密鍵と CSR を使う。この場合、クライアント証明書にラベルを付ける こともできます。
独自の CSR を生成して使う場合は、次のようなコマンドを実行できます。
openssl req -new -newkey rsa:2048 -nodes -keyout client1.key -out client1.csr -subj '/C=GB/ST=London/L=London/O=Organization/CN=CommonName'または、GitHub ↗ のこのようなスクリプトを使います。
証明書作成時に表示される値は、作成後に確認できなくなるため、必ずコピーしてください。
作成した Client Certificate をクライアントで使うには、対象デバイスに配置する必要があります。API やホスト名を対象とするプロセス / スクリプトと同じディレクトリに置きます。
一般的には、デバイスごとに 1 つの Client Certificate を使うことを推奨します。公開証明書と秘密証明書をシステムが実際に使うよう設定することが特に重要です。
例として、MacBook では 両方の証明書をキーチェーンに追加 ↗ します。
別の例として、PKCS12(P12)証明書 ↗ ファイルを生成し、ブラウザーに追加 ↗ します。
openssl pkcs12 -export -out certificate.p12 -inkey private-cert.pem -in cert.pem前の手順で取得した値を使います。
cURL コマンドの例:
curl -v --cert cert.pem --key private-cert.pem <HOSTNAME>前の手順で取得した値を使います。
mTLS の検証は Cloudflare WAF フェーズ で行います。動的フィールドを使った WAF の Custom Rules を作成します。
Client Certificate の詳細はすべて、Cloudflare Ruleset Engine の cf.tls_* フィールドで確認できます。
ブロックアクションを使う WAF Custom Rule の例:
公開証明書と秘密証明書を同じディレクトリに置き、次の cURL コマンドでアクセスできます。
curl -I --cert cert.pem --key private-cert.pem https://mtls-test.example.com/mtls-testHTTP/2 200
server: cloudflare証明書なしでは、ターミナルに次のように表示されます。
curl -I https://mtls-test.example.com/mtls-testHTTP/2 403
server: cloudflare