カスタム証明書の管理
このページでは、カスタム証明書に関するCloudflareの要件をリストし、CloudflareダッシュボードまたはAPIを使用してこれらの証明書をアップロードおよび更新する方法を説明します。
Cloudflareは、カスタム証明書を受け入れる前に、それらを解析し、要件リストに従って有効性を確認します。
要件の完全リスト
アップロードする各カスタム証明書は以下の条件を満たす必要があります:
-
PEM形式でエンコードされていること(PEM、PKCS#7、またはPKCS#12)。変換の例については、OpenSSLを使用した変換 ↗を参照してください。
-
キー ファイル パスワードを持たないこと。
-
アップロード時から14日未満で期限切れにならないこと。
-
アップロードされるゾーン内の少なくとも1つのホスト名と一致するサブジェクト代替名(SAN)を持つこと。
-
最小長以上のプライベートキーを使用すること。現在、RSAの場合は2048ビット、ECDSAの場合は225ビットです。
-
大手ブラウザによって公に信頼されていること。これは、バンドル方法が
User Definedと指定されている証明書には適用されません。 -
以下のいずれかの証明書タイプであること:
- 統合通信証明書(UCC)
- 拡張検証(EV)
- ドメイン検証(DV)
- 組織検証(OV)
ダッシュボードでカスタムSSL証明書をアップロードするには:
-
Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
-
アプリケーションを選択します。
-
SSL/TLSに移動します。
-
エッジ証明書で、カスタムSSL証明書のアップロードを選択します。
-
関連する値をSSL証明書およびプライベートキーのテキストエリアにコピー&ペーストします(またはファイルから貼り付けを選択します)。
-
適切なバンドル方法を選択します。
-
プライベートキー制限の値を選択します。
-
レガシークライアントサポートの値を選択します。これはサーバー名表示(SNI)のサポートを指定します:
-
モダン(推奨): SNIのみ
-
レガシー: 非SNIをサポート
-
-
カスタム証明書のアップロードを選択します。
提供されたキーが証明書と一致しませんというエラーが表示された場合は、証明書がプライベートキーと一致することを確認するために、証明書発行機関に連絡してください。 -
(オプション)CAA DNSレコードを追加します。
以下の呼び出しは、app.example.comで使用するための証明書をアップロードします。Cloudflareは、ブラウザとの最大互換性のために証明書を自動的にバンドルします。
- ファイルを更新し、ペイロードを構築します。
cat app_example_com.pem-----BEGIN CERTIFICATE-----MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E...SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/OOeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7-----END CERTIFICATE-----MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')"MYKEY="$(cat app_example_com.key|perl -pe 's/\r?\n/\\n/'|sed -e's/..$//')"With the certificate and key saved to environment variables (using escaped newlines), build the payload:
request_body=$(< <(cat <<EOF{ "certificate": "$MYCERT", "private_key": "$MYKEY", "bundle_method": "ubiquitous"}EOF))プライベートキーが物理的に復号化できる場所を指定する地理的制限 ↗をオプションで追加できます:
request_body=$(< <(cat <<EOF{ "certificate": "$MYCERT", "private_key": "$MYKEY", "bundle_method": "ubiquitous", "geo_restrictions": {"label": "us"}'}EOF))SNIをTLSハンドシェイクに含まないレガシークライアントのサポートを有効にすることもできます。
request_body=$(< <(cat <<EOF{ "certificate": "$MYCERT", "private_key": "$MYKEY", "bundle_method": "ubiquitous", "geo_restrictions": {"label": "us"}', "type":"sni_custom"}EOF))sni_customはCloudflareによって推奨されています。特定のクライアントが非SNIサポートを必要とする場合はlegacy_customを使用してください。Cloudflare APIは、すべてのカスタムSSL証明書をデフォルトでレガシーとして扱います。
- 証明書とキーをアップロードします。
POSTエンドポイントを使用して、証明書とキーをアップロードします。
curl https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_certificates \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data "$request_body"- (オプション)CAAレコードを追加します。
A Certificate Authority Authorization (CAA) DNS record specifies which certificate authorities (CAs) are allowed to issue certificates for a domain. This record reduces the chance of unauthorized certificate issuance and promotes standardization across your organization.
詳細については、CAAレコードの作成を参照してください。
既存のカスタム証明書を更新する前に、アクティブなユニバーサルまたは高度な証明書をフォールバックオプションとして持つことを検討するかもしれません。ゾーン内のホスト名とエッジ証明書のステータスのリストを確認するには、SSL/TLS > エッジ証明書 ↗に移動します。
エンタープライズプランに加入していて、カスタム(モダン)証明書を更新したい場合は、ステージング環境(ベータ)へのアクセスをリクエストすることも検討してください。
これらの手順に従ってカスタム証明書を置き換えると、ダウンタイムは発生しません。接続は終了せず、新しい接続は新しい証明書を使用します。古い証明書は、新しい証明書がアップロードされてアクティブになるまで実際には削除されません。
ダッシュボードで証明書を更新するには:
- Cloudflareダッシュボード ↗にログインし、アカウントを選択します。
- アプリケーションを選択します。
- SSL/TLSに移動します。
- エッジ証明書で、カスタム証明書を見つけます。
- スパナアイコンを選択し、SSL証明書とキーを置き換えるを選択します。
- 新しい証明書をアップロードすると同じ手順に従います。
APIを使用して証明書を更新するには、PATCHコマンドを送信します。