Skip to content

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

クライアント証明書(mTLS)

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

通常の TLS は、サーバーの身元をクライアントに対して確認します。相互 TLS(mTLS)は、さらにサーバー側でもクライアント証明書を使ってクライアントの身元を確認します。有効な証明書を提示するデバイスやサービスだけにアクセスを制限できます。

Cloudflare の公開鍵基盤(PKI)でクライアント証明書を作成するか、独自の CA を持ち込む(BYOCA) ことができます。

相互 TLS(mTLS) 認証は、クライアント証明書を使い、クライアントとサーバー間のトラフィックが双方向で安全かつ信頼できることを保証する、一般的なセキュリティ慣行です。mTLS は、ID プロバイダーで認証しないリクエスト(IoT デバイスなど)が、所定のリソースへ到達できることを示す手段にもなります。


仕組み

ホスト名で mTLS を有効 にすると、Cloudflare は接続元クライアントに有効な証明書の提示を求めます。クライアント証明書は、アクセスを許可するデバイスやサービスにインストールします。

Cloudflare は、アカウント単位で設定した CA に対してクライアント証明書を検証します。検証はアカウント単位のため、各ホスト名で mTLS が有効であれば、同じ証明書をアカウント内の複数ドメインで使えます(例: host.example.comname.example.netsecure.anotherdomain.test)。

アカウント単位の CA は次のいずれかです。

検証結果は cf.tls_client_auth.cert_verified フィールドに保存されます。

  • 成功: cf.tls_client_auth.cert_verifiedtrue です。クライアント証明書の詳細は 特定の mTLS フィールド で確認できます。
  • 失敗: cf.tls_client_auth.cert_verifiedfalse です。

上限

Cloudflare 管理の CA

各ゾーンでは、デフォルトで 有効なクライアント証明書を 100 件まで 使えます。クォータに算入されるのは有効な証明書だけです。証明書を失効すると、その枠はすぐ空きます。

クォータを増やすには、API Shield 付きの Enterprise アカウントが必要です。権限が適用されると、デフォルトはゾーンあたり 100,000 件になります。増加を申請するには、アカウントチームに問い合わせてください。

BYOCA

各 Enterprise アカウントは、CA 証明書を 5 件まで アップロードできます。このクォータは API ShieldWorkers mTLSCloudflare Gateway で共有されます。Cloudflare Access 経由でアップロードした CA には適用されません。Access は別のクォータを使います。

BYOCA の CA クォータの増加を申請するには、アカウントチームに問い合わせてください。


ユースケース

保護対象に応じて、mTLS にはいくつかの実装パターンがあります。より広い概要は mTLS ラーニングパス を参照してください。

mTLS Workers バインディングを除き、上記の実装では Cloudflare 管理の CA の代わりに独自の CA を使えます。独自の CA を持ち込む を参照してください。

mTLS と Workers

Worker が外部サービスにクライアント証明書を提示する必要がある場合は、mTLS Workers バインディング を使います。クライアントから Worker へのリクエストを認証する場合は、通常の アプリケーションセキュリティ向け mTLS を参照してください。

flowchart LR
        accTitle: クライアントから Worker への mTLS と、Worker から外部サービスへの mTLS
        accDescr: Cloudflare Workers で検討できる、2 種類の mTLS 実装を示す図です。
        A[クライアント] <--アプリセキュリティ mTLS--> B((Cloudflare))<--mTLS Worker バインディング--> C[(外部サービス)]

関連リソース

役に立ちましたか?