Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Application Security で mTLS を使う

最終更新 Markdown で表示Agent セットアップ

1. mTLS を有効にする

  1. Cloudflare ダッシュボードを開き、アカウントとドメインを選択します。

  2. SSL/TLS > Client Certificates に移動し、Hosts セクションで Edit を選択して、mTLS を有効にする ホスト名を追加します。

    ホストの例: mtls-test.example.com

  3. Add Certificate を選択します。デフォルトの Certificate Authority は Cloudflare 管理の CA です。

  4. 必須項目を入力します。次のいずれかを選べます。

  • 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 のこのようなスクリプトを使います。

証明書作成時に表示される値は、作成後に確認できなくなるため、必ずコピーしてください。

2. クライアント証明書をインストールする

作成した 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>

前の手順で取得した値を使います。

3. WAF でクライアント証明書を検証する

mTLS の検証は Cloudflare WAF フェーズ で行います。動的フィールドを使った WAF の Custom Rules を作成します。

Client Certificate の詳細はすべて、Cloudflare Ruleset Enginecf.tls_* フィールドで確認できます。

ブロックアクションを使う WAF Custom Rule の例:

クライアント証明書の検証手順における、ブロックアクション付き WAF カスタムルールの例(Cloudflare ダッシュボード)

デモ

公開証明書と秘密証明書を同じディレクトリに置き、次の cURL コマンドでアクセスできます。

curl -I --cert cert.pem --key private-cert.pem https://mtls-test.example.com/mtls-test
HTTP/2 200
server: cloudflare

証明書なしでは、ターミナルに次のように表示されます。

curl -I https://mtls-test.example.com/mtls-test
HTTP/2 403
server: cloudflare

役に立ちましたか?