ホスト名単位の Authenticated Origin Pulls(AOP)を有効にすると、指定したホスト名へのプロキシ済みトラフィックはすべて、アップロードした証明書でオリジン Web サーバー上で認証されます。Cloudflare からの接続の認証には、プライベート PKI のクライアント証明書を使えます。
グローバル、ゾーン単位、ホスト名単位の AOP は、それぞれ独立した設定です。どれかを有効または無効にしても、他には影響しません。指定したホスト名では、ホスト名単位の証明書がゾーン単位およびグローバルの証明書より優先されます。
OpenSSL でカスタム証明書を生成する例は、次の手順を参照してください。カスタム証明書の発行に使う CA ルート証明書は、オリジンへアップロードする CA と同じものにしてください。
OpenSSL の例
- 次のコマンドを実行して、AES-256 暗号化を使った 4096 ビットの RSA 秘密鍵を生成します。プロンプトが表示されたらパスフレーズを入力します。
openssl genrsa -aes256 -out rootca.key 4096- CA ルート証明書を作成します。プロンプトが表示されたら、証明書に含める情報を入力します。
Common Nameフィールドにはホスト名ではなく、ドメイン名を指定します。
openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1826 -out rootca.crt- 証明書署名要求(CSR)を作成します。プロンプトが表示されたら、要求に含める情報を入力します。
Common Nameフィールドにはホスト名を指定します。
openssl req -new -nodes -out cert.csr -newkey rsa:4096 -keyout cert.key- 前の手順で作成した
rootca.keyとrootca.crtを使って証明書に署名します。
openssl x509 -req -in cert.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out cert.crt -days 730 -sha256 -extfile ./cert.v3.ext- 証明書拡張ファイル
cert.v3.extに次の内容が指定されていることを確認します。
basicConstraints=CA:FALSE-
Origin Server ページを開きます。
Origin Server を開く ↗ -
Authenticated Origin Pulls タブを選びます。
-
Per-hostname セクションで Upload certificate を選びます。
-
証明書と秘密鍵を貼り付け、Continue を選びます。
-
証明書の詳細を確認し、後で参照できるように証明書 ID を保存して、Continue を選びます。
-
Associate Hostnames ページで、この証明書を使う完全修飾ドメイン名(FQDN)を入力し、それぞれ Add を選びます。この手順はスキップして、後からホスト名を関連付けることもできます。
-
Save を選んで確定します。
Upload a Hostname Client Certificate エンドポイントで、カスタム証明書をアップロードします。
MYCERT="$(cat cert.crt|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')"
MYKEY="$(cat cert.key|perl -pe 's/\r?\n/\\n/'|sed -e's/..$//')"
request_body=$(< <(cat <<EOF
{
"certificate": "$MYCERT",
"private_key": "$MYKEY",
"bundle_method":"ubiquitous"
}
EOF
))
# Push the certificate
curl --silent \
"https://api.cloudflare.com/client/v4/zones/$ZONEID/origin_tls_client_auth/hostnames/certificates" \
--header "Content-Type: application/json" \
--header "X-Auth-Email: $MYAUTHEMAIL" \
--header "X-Auth-Key: $MYAUTHKEY" \
--data "$request_body"API レスポンスの証明書 id を保存します。手順 3 で必要になります。
証明書をインストールしたら、オリジン Web サーバーがクライアント証明書を受け入れるように設定します。
Apache と NGINX の例を次に示します。または、オリジン Web サーバーのドキュメントを参照してください。例: HAProxy ↗、Traefik ↗、Caddy ↗。
Apache の例
SSLCACertificateFile /path/to/origin-pull-ca.pemこの例では、証明書を /path/to/origin-pull-ca.pem に保存しています。
NGINX の例
ssl_verify_client optional;
ssl_client_certificate /etc/nginx/certs/cloudflare.crt;この例では、証明書を /etc/nginx/certs/cloudflare.crt に保存しています。
この時点で、設定が正しく動作しているかを確認するため、オリジンでログを有効にすることも検討してください。
-
Origin Server ページを開きます。
Origin Server を開く ↗ -
Authenticated Origin Pulls タブを選びます。
-
Per-hostname セクションで、使う証明書を探し、ホスト名を関連付けます。
手順 2 でオリジンにログを設定している場合は、Authenticated Origin Pulls が動作していることをテストして確認します。
Enable or Disable a Hostname for Client Authentication エンドポイントで、特定ホスト名の Authenticated Origin Pulls を有効にします。
手順 2 でオリジンにログを設定している場合は、Authenticated Origin Pulls が動作していることをテストして確認します。
特定のオリジン構成で想定どおりに動作することを確認できたら、オリジン側で認証を強制するように設定します。
Apache の例
SSLVerifyClient requireNGINX の例
ssl_verify_client on;手順が終わったら、curl でオリジンの IP に直接リクエストを送り、証明書の検証が強制されているためにリクエストが失敗することを確認できます。
AOP 証明書の有効期限が近づいたときに通知を受け取るアラートを設定できます。
Hostname-level Authenticated Origin Pulls Certificate Expiration Alert
対象Cloudflare からオリジンサーバーへの接続を保護するため、ホスト名レベルの Authenticated Origin Pull (AOP) に独自証明書をアップロードしているお客様向けです。 AOP 証明書の有効期限通知は、期限の 30 日前と 14 日前に送られます。
その他のオプション / フィルタなし。
含まれるプランAuthenticated Origin Pull。
受け取ったときの対応ホスト名レベルの AOP 用に、更新した証明書をアップロードします。
アラートの設定方法は、Cloudflare Notifications を参照してください。
追加の操作は 証明書を管理する を参照してください。
設定を解除する方法は ロールバック を参照してください。