コンテンツにスキップ

カスタム証明書のデプロイ

Cloudflare証明書をインストールしたくないエンタープライズ顧客は、自分のルート証明書をCloudflareにアップロードするオプションがあります。この機能は、時折「Bring Your Own Public Key Infrastructure (BYOPKI)」と呼ばれます。Gatewayは、アップロードした証明書を使用してエンドユーザーとGateway間のすべてのセッションを暗号化し、以前はCloudflare証明書が必要だったすべてのHTTPS検査機能を有効にします。アカウントに複数の証明書をアップロードできますが、同時にアクティブにできるのは1つだけです。また、JIT証明書でドメインをインターセプトするためにプライベートキーをアップロードする必要があり、ブロックページを有効にする必要があります。

カスタムルートCAの生成

カスタムルートCAを生成する前に、OpenSSLがインストールされていることを確認してください。

  1. ターミナルを開きます。

  2. ルートCA用のディレクトリを作成し、その中に移動します。

    Terminal window
    mkdir -p /root/customca
    cd /root/customca
  3. ルートCA用のプライベートキーを生成します。

    Terminal window
    openssl genrsa -out <CUSTOM-ROOT-PRIVATE-KEY>.pem 2048
  4. 自己署名のルート証明書を生成します。

    Terminal window
    openssl req -x509 -sha256 -new -nodes -key <CUSTOM-ROOT-PRIVATE-KEY>.pem -days 365 -out <CUSTOM-ROOT-CERT>.pem

証明書とプライベートキーをアップロードする準備をする際は、証明書のコモンネームに不一致のサブドメインなどの不要な文字を削除してください。プライベートキーを確認するには、次のコマンドを実行します。

Terminal window
openssl rsa -in <CUSTOM-ROOT-PRIVATE-KEY>.pem -text

証明書を確認するには、次のコマンドを実行します。

Terminal window
openssl x509 -in <CUSTOM-ROOT-CERT>.pem -text

カスタムルート証明書のデプロイ

  1. 証明書がデバイスにインストールされていることを確認します。

  2. Use the Upload mTLS certificate endpoint to upload the certificate and private key to Cloudflare. The certificate must be a root CA, formatted as a single string with \n replacing the line breaks.

    Terminal window
    curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/mtls_certificates" \
    --header "X-Auth-Email: <EMAIL>" \
    --header "X-Auth-Key: <API_KEY>" \
    --header "Content-Type: application/json" \
    --data '{
    "name": "example_ca_cert",
    "certificates": "-----BEGIN CERTIFICATE-----\nXXXXX\n-----END CERTIFICATE-----",
    "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXX\n-----END PRIVATE KEY-----",
    "ca": true
    }'

    The response will return a UUID for the certificate:

    {
    "success": true,
    "errors": [],
    "messages": [],
    "result": {
    "id": "2458ce5a-0c35-4c7f-82c7-8e9487d3ff60",
    "name": "example_ca_cert",
    "issuer": "O=Example Inc.,L=California,ST=San Francisco,C=US",
    "signature": "SHA256WithRSA"
    ...
    }
    }
  3. UUIDを使用してGatewayで証明書を有効にします。

    Terminal window
    curl --request PATCH \
    "https://api.cloudflare.com/client/v4/accounts/{account_id}/gateway/configuration" \
    --header "X-Auth-Email: <EMAIL>" \
    --header "X-Auth-Key: <API_KEY>" \
    --header "Content-Type: application/json" \
    --data '{
    "settings": {
    "custom_certificate": {
    "enabled": true,
    "id": "2458ce5a-0c35-4c7f-82c7-8e9487d3ff60"
    }
    }
    }'

    レスポンスには、証明書の現在のステータスが表示されます。

    {
    "success": true,
    "errors": [],
    "messages": [],
    "result": {
    "settings": {
    "antivirus": {...},
    "block_page": {...},
    "custom_certificate":
    {
    "enabled": true,
    "id": "2458ce5a-0c35-4c7f-82c7-8e9487d3ff60",
    "binding_status": "pending_deployment",
    "qs_pack_id": "50a78g31-a5b5-4k58d-a6ed-b0ac17da9k05"
    },
    "tls_decrypt": {...},
    "activity_log": {...},
    "browser_isolation": {...},
    "fips": {...},
    },
    },
    "created_at": "2014-01-01T05:20:00.12345Z",
    "updated_at": "2014-01-01T05:20:00.12345Z"
    }

binding_statusactiveに変わると、Gatewayはカスタムルート証明書とプライベートキーを使用してトラフィックに署名します。カスタム証明書を無効にすると、GatewayはデフォルトのCloudflare証明書に戻ります。

HTTPエラーのトラブルシューティング

カスタム証明書をデプロイした後にGatewayがHTTPレスポンスコード: 526を返す場合は、FAQでエラーをトラブルシューティングしてください。