Skip to content

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

mTLS 向けに独自の CA を持ち込む

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

このページでは、Cloudflare CA が発行していないクライアント証明書の管理方法を説明します。全体像は Cloudflare の mTLS ラーニングパス を参照してください。

独自の CA を持ち込む(BYOCA)は、すでに mTLS を導入済みで、デバイスに クライアント証明書がインストールされている 場合に特に有用です。

利用可否

  • この機能は Enterprise アカウントでのみ利用できます。
  • 各 Enterprise アカウントは、最大 5 つの CA をアップロードできます。この上限は Cloudflare Access 経由でアップロードした CA には適用されません。
  • CA 証明書の上限は、API ShieldWorkers mTLSCloudflare Gateway で共有されます。
  • 上限を引き上げる場合は、アカウントチームへ連絡してください。

BYOCA を使う場合

BYOCA は次の場合に適しています。

  • すでに内部 CA があり、デバイスにクライアント証明書がインストールされている。
  • 証明書の発行量や入れ替わりが多い — たとえば、エフェメラルな仮想マシン、コンテナ、デバイスごとに 1 枚発行する場合。BYOCA では Cloudflare が保存するのは CA 証明書だけで、発行済みの個別証明書は保存しないため、証明書ごとの上限はありません。
  • 証明書の有効期間、鍵の種類、失効を、自前の CA ツールで完全に管理したい。

認証するデバイスやサービスが少なく安定している場合は、Cloudflare 管理の CA のほうが設定が簡単です。

CA 証明書の要件

CA をアップロードすると、Cloudflare は一定の要件に従って証明書を検証します。

  • CA 証明書は、公開信頼されている CA のもの、または自己署名のものを使用できます。

  • 証明書の Basic Constraints では、属性 CATRUE に設定する必要があります。

  • 証明書は、次のいずれかの署名アルゴリズムを使用する必要があります。

    使用できる署名アルゴリズム

    x509.SHA1WithRSA

    x509.SHA256WithRSA

    x509.SHA384WithRSA

    x509.SHA512WithRSA

    x509.ECDSAWithSHA1

    x509.ECDSAWithSHA256

    x509.ECDSAWithSHA384

    x509.ECDSAWithSHA512

CA で mTLS を設定する

  1. Cloudflare ダッシュボードで、Client Certificates ページを開きます。

    Client Certificates を開く ↗
  2. Add Certificate を選択します。

  3. Certificate Authority ドロップダウンで Bring your own CA を選択します。

  4. CA 証明書ファイル(PEM エンコード)をアップロードし、CA の名前を入力します。

  5. Continue を選択します。

  6. Associate Hostnames ページで、この CA で mTLS 検証を行うホスト名を入力し、それぞれ Add を選択します。この手順はスキップし、あとからホスト名を関連付けることもできます。

  7. Save を選択して確定します。

  1. Upload mTLS certificate エンドポイント で、CA ルート証明書をアップロードします。
  • ca boolean 必須

    • 証明書が CA 証明書であることを示すため、true に設定します。
  • certificates string 必須

    • CA 証明書に対応する .pem ファイルの内容を入れます。改行は \n に置き換えた 1 つの文字列にします。
  • name string 任意

    • CA 証明書の一意な名前を指定します。
  • private_key string 任意

    • 証明書の秘密鍵に対応する .pem ファイルの内容を入れます。改行は \n に置き換えた 1 つの文字列にします。
  1. API レスポンスで返る証明書 ID(id)を控えます。
  2. Replace Hostname Associations エンドポイント で、その CA で mTLS 検証を行う各ホスト名の mTLS を有効にします。次のパラメーターを使います。
  • hostnames array 必須

    • クライアント証明書の検証にその CA を使うホスト名を列挙します。

  • mtls_certificate_id string 必須

    • 前の手順で取得した証明書 ID を指定します。

  1. (任意)GET リクエスト で、CA のホスト名関連付けを確認します。

CA をアップロードしてホスト名を関連付けたら、クライアント証明書の検証を強制するカスタムルールを作成します。 ダッシュボード または API で作成できます。

  "expression": "(http.host in {\"<HOSTNAME_1>\" \"<HOSTNAME_2>\"} and not cf.tls_client_auth.cert_verified)",
  "action": "block"

1 つのホスト名に複数の CA を使う

同じホスト名に、複数の CA(Cloudflare 管理または BYOCA)を関連付けられます。BYOCA 証明書では、最後にデプロイした証明書が優先されます。

Cloudflare 管理の証明書との関連付けを外し、BYOCA 証明書だけを使う場合:

  1. Cloudflare ダッシュボードで、Client Certificates ページを開きます。

    Client Certificates を開く ↗
  2. Cloudflare-issued Client CertificatesHosts セクションで Edit を選択します。

  3. 削除するホスト名の横の × を選択します。

  4. Save を選択して確定します。

  1. ホスト名の関連付けを一覧 します。mtls_certificate_id パラメーターは付けません

Required API token permissions

At least one of the following token permissions is required:
  • SSL and Certificates Write
  • SSL and Certificates Read
List Hostname Associationsbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/certificate_authorities/hostname_associations" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
  1. API が返す hostnames 配列をコピーし、Cloudflare 管理の CA を使わなくするホスト名を削除して更新します。
  2. Replace Hostname Associations エンドポイント を、mtls_certificate_id パラメーターなしで呼び出し、Cloudflare 管理の CA に対して操作します。hostnames には前の手順のリストを使います。

Required API token permissions

At least one of the following token permissions is required:
  • SSL and Certificates Write
Replace Hostname Associationsbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/certificate_authorities/hostname_associations" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"hostnames": [
				"<UPDATED_HOSTNAME_ASSOCIATIONS>"
		]
	}'

アップロードした CA を削除する

以前アップロードした CA を削除する場合は、先にその CA のホスト名関連付けをすべて解除する必要があります。

  1. Cloudflare ダッシュボードで、Client Certificates ページを開きます。

    Client Certificates を開く ↗
  2. BYOCA タブを選択します。

  3. 削除する CA を見つけ、横の三点リーダーを選択します。

  4. 関連付けられているホスト名があれば、先にすべて解除します。

  5. 削除オプションを選択し、確定します。

  1. Replace Hostname Associations エンドポイント にリクエストします。hostnames は空の配列、mtls_certificate_id には CA 証明書 ID を指定します。
  "hostnames": [],
  "mtls_certificate_id": "<CERTIFICATE_ID>"
  1. Delete mTLS certificate エンドポイント で証明書を削除します。

CA のホスト名関連付けを一覧する

  1. Cloudflare ダッシュボードで、Client Certificates ページを開きます。

    Client Certificates を開く ↗
  2. BYOCA タブを選択します。

  3. 確認する CA を見つけ、横の三点リーダーを選択します。

  4. Edit hostnames を選択します。Certificate Details パネルに、関連付けられたホスト名が表示されます。

List Hostname Associations エンドポイント を使い、mtls_certificate_id クエリパラメーターにアップロードした CA の証明書 ID を設定します。

Required API token permissions

At least one of the following token permissions is required:
  • SSL and Certificates Write
  • SSL and Certificates Read
List Hostname Associationsbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/certificate_authorities/hostname_associations?mtls_certificate_id=ID_FROM_STEP_2" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

役に立ちましたか?