Certificate Manager のトラブルシューティング

このページでは、Certificate Manager の使用時に発生する可能性のある最も一般的なエラーについて説明します。また、これらのエラーを診断して解決する手順についても説明します。

TLS(SSL)証明書に関連する問題の解決については、SSL 証明書のトラブルシューティングをご覧ください。

Google マネージド証明書のトラブルシューティング

Google マネージド証明書の場合、証明書リソースのステータスと、証明書に関連付けられている各ドメインの承認ステータスを確認できます。

マネージド証明書の状態

マネージド証明書の状態(managed.state)を確認します。

gcloud certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION \
    --format="get(managed.state)"

次のように置き換えます。

  • CERTIFICATE_NAME: 証明書の名前。
  • LOCATION: ターゲット Google Cloud ロケーション。デフォルトの場所は global です。

証明書の状態の値は次のとおりです。

状態 説明
PROVISIONING

Certificate Manager が証明書をプロビジョニングまたは更新しています。

Google マネージド証明書のプロビジョニングには、DNS とロードバランサの構成の変更がインターネット経由で伝播されてから最長で 60 分かかることがあります。証明書が PROVISIONING 状態のままである場合は、managed.provisioningIssue フィールドまたは managed.authorizationAttemptInfo フィールドで詳細を確認してください。

ACTIVE 証明書がプロビジョニングされている。証明書マップエントリに関連付けて、ターゲット プロキシまたはロードバランサに接続すると、トラフィックを処理できるようになります。
FAILED

証明書のプロビジョニングまたは更新が複数回失敗し、Certificate Manager が証明書のプロビジョニングを停止しました。Certificate Manager は、この状態ではプロビジョニングを再試行しません。

この問題を解決するには、DNS またはロードバランサの構成の問題を修正し、失敗した証明書を削除して、新しいマネージド証明書リソースを作成します。

失敗の詳細については、managed.provisioningIssue フィールドまたは managed.authorizationAttemptInfo フィールドを確認してください。

ドメイン承認試行の状態

証明書に関連付けられているドメインの承認試行状態を確認します。

gcloud certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION \
    --format="get(managed.authorizationAttemptInfo)"

次のように置き換えます。

  • CERTIFICATE_NAME: 証明書の名前。
  • LOCATION: ターゲット Google Cloud ロケーション。デフォルトの場所は global です。

証明書に関連付けられている各ドメインは、次のいずれかの状態(managed.authorizationAttemptInfo.state)になります。

状態 説明
AUTHORIZING Certificate Manager は、このドメインの証明書をプロビジョニングし、ドメインを承認しています。
AUTHORIZED ドメインが承認されている。証明書に複数のドメインが含まれている場合、証明書はプロビジョニングされ、すべてのドメインが AUTHORIZED 状態になった後にのみ ACTIVE になります。
FAILED ドメインを承認できませんでした。このエラーにより、Certificate Manager はマネージド証明書を発行できません。この問題を診断するには、障害発生ドメインの failureReason、details、troubleshooting フィールドを確認します。

ドメイン承認の失敗理由

ドメインの承認試行状態が FAILED の場合、managed.authorizationAttemptInfo.failureReason フィールドに失敗の理由が表示されます。次の表に、使用可能な値を示します。

失敗の理由 説明
CONFIG

DNS またはロードバランサに、このドメインの構成に関する問題があります。

詳細については、エラーのトラブルシューティングの表をご覧ください。

CAA

明示的な CAA 制限やドメインの CAA レコードの確認エラーなど、CAA レコードの問題により、証明書のプロビジョニングに失敗しました。

この問題を解決するには、DNS ゾーンの構成で、認証局がドメインの証明書を発行できるようにします。プロジェクトごとの DNS 認証(すべてのリージョン証明書を含む)の場合、Certificate Manager は Google Trust Services(pki.goog)のみを使用するため、CAA レコードで pki.goog が許可されていることを確認してください。他の DNS 認証とロードバランサ認証の場合、Certificate Manager は Google Trust Services(pki.goog)と Let's Encrypt(letsencrypt.org)の両方を使用できます。詳細については、Google マネージド証明書を発行できる CA を指定するをご覧ください。

RATE_LIMITED

リクエストは、認証局または内部システムによって制限されました。たとえば、Let's Encrypt の登録済みドメインあたりの証明書の週あたりの上限などです。

この問題を解決するには、レート制限が期限切れになるまで待ちます。異なるプロジェクト間で不要な重複証明書をリクエストしないでください。

Certificate Manager 証明書に関連するエラー

このセクションでは、Google マネージド Certificate Manager 証明書の authorizationAttemptInfo フィールドに関連するエラーのトラブルシューティングについて説明します。エラーは、次のフィールドにこれらの値がある場合にのみ、managed.authorizationAttemptInfo.troubleshooting セクションに表示されます。

  • managed.authorizationAttemptInfo.state = FAILED
  • managed.authorizationAttemptInfo.failureReason = CONFIG

エラーとその解決方法の詳細については、次の表をご覧ください。

エラー 説明
CNAME_MISMATCH このエラーは、想定される CNAME レコードの値が解決された CNAME レコードの値と一致しない場合に、DNS 認証でのみ発生します。

この問題を解決するには、想定される CNAME レコードを DNS 構成に追加します。詳細については、DNS 構成に CNAME レコードを追加するをご覧ください。

RESOLVED_TO_NOT_SERVING このエラーは、ドメインに、証明書がロードバランサに接続されていない特定の IP アドレスを指す DNS A レコードと AAAA レコードが含まれている場合に発生します。

このエラーは、ロードバランサの承認を使用する証明書にのみ適用されます。ロードバランサ認証を使用して証明書をプロビジョニングできるのは、ロードバランサを構成した後のみです。

この問題を解決するには、ドメインの DNS A レコードと AAAA レコードを更新して、ロードバランサの IP アドレスを指定します。ドメインの DNS A レコードと AAAA レコードから解決された IP アドレスは ips.resolved パラメータに保存され、この証明書が接続されているロードバランサの IP アドレスは ips.serving パラメータに保存されます。

ドメインの DNS A レコードと AAAA レコードは、ロードバランサの IP アドレスのみを指す必要があります。たとえば、DNS A レコードがロードバランサの IP アドレスを指しているが、DNS AAAA レコードが別の IP アドレスを指している場合、RESOLVED_TO_NOT_SERVING エラーが発生します。

また、ドメインの DNS A レコードと AAAA レコードが世界中で正しく、一貫して解決されることを確認する必要があります。詳細については、マルチパースペクティブ ドメイン検証の失敗セクションをご覧ください。

NO_RESOLVED_IPS このエラーは、ドメインに DNS A レコードと AAAA レコードが含まれていない場合に発生します。

このエラーは、ロードバランサの承認を使用する証明書にのみ適用されます。ロードバランサ認証を使用して証明書をプロビジョニングできるのは、ロードバランサを構成した後のみです。

この問題を解決するには、このドメインの DNS A レコードと AAAA レコードを追加し、レコードがターゲット HTTPS プロキシまたは Media CDN エッジ キャッシュ サービスの IP アドレスを指していることを確認します。

また、ドメインの DNS A レコードと AAAA レコードが世界中で正しく、一貫して解決されることを確認する必要があります。詳細については、マルチパースペクティブ ドメイン検証の失敗セクションをご覧ください。

RESOLVED_TO_SERVING_ON_ALT_PORTS このエラーは、DNS の A レコードと AAAA レコードを含むドメインが、この証明書が接続されているロードバランサの IP アドレスを指しているものの、それらの IP アドレスでポート 443 が開いていない場合に発生します。

このエラーは、ロードバランサの承認がある証明書にのみ適用されます。ロードバランサ認証を使用して証明書をプロビジョニングできるのは、ロードバランサを構成した後のみです。

この問題を解決するには、証明書が接続されているロードバランサがポート 443 でリッスンしていることを確認します。ips.serving_on_alt_ports パラメータには、ポート 443 が開いていないロードバランサの IP アドレスのリストが格納されます。

また、ドメインの DNS A レコードと AAAA レコードが世界中で正しく、一貫して解決されることを確認する必要があります。詳細については、マルチパースペクティブ ドメイン検証の失敗セクションをご覧ください。

CERTIFICATE_NOT_ATTACHED このエラーは、証明書がロードバランサに接続されていない場合に発生します。この問題を解決するには、証明書がロードバランサに接続されていることを確認します。詳細については、ロードバランサに証明書をデプロイするをご覧ください。

このエラーは、証明書がターゲット HTTPS プロキシに接続されている証明書マップの一部であるにもかかわらず、プロキシが転送ルールに接続されていない場合にも発生します。この問題を解決するには、ターゲット HTTPS プロキシを適切な転送ルールに接続します。詳細については、ターゲット プロキシの概要と転送ルールの概要をご覧ください。

このエラーは、ロードバランサの承認がある証明書にのみ適用されます。ロードバランサ認証を使用して証明書をプロビジョニングできるのは、ロードバランサを構成した後のみです。

ターゲット プロキシから証明書マップを切断するときに発生するエラー

ターゲット プロキシから証明書マップを切断すると、次のエラーが表示されます。

"There must be at least one certificate configured for a target proxy."

このエラーは、切断する証明書マップで指定された証明書以外のターゲット プロキシに割り当てられた証明書がない場合に発生します。 マップを切断するには、まず 1 つ以上の証明書をプロキシに直接割り当てます。

証明書マップエントリを証明書に関連付けるときのエラー

証明書マップエントリを証明書に関連付けると、次のエラーが表示されます。

"certificate can't be used more than 100 times"

このエラーは、すでに 100 個の証明書マップエントリに関連付けられている証明書に証明書マップエントリを関連付けようとしたときに発生します。この問題を解決するには、次の操作を行います。

  • Google マネージド証明書の場合は、別の証明書を作成します。新しい証明書マップエントリをこの新しい証明書に関連付け、新しい証明書をロードバランサに添付します。
  • セルフマネージド証明書の場合は、新しい名前で証明書を再度アップロードします。新しい証明書マップエントリをこの新しい証明書に関連付け、新しい証明書をロードバランサに添付します。

CA Service インスタンスによって発行された証明書に関連する問題

このセクションでは、Certificate Manager を使用して CA Service インスタンスによって発行された Google マネージド証明書をデプロイするときに発生する可能性がある最も一般的なエラーと、それらの考えられる原因について説明します。

Failed to create Certificate Issuance Config resources エラーが発生した場合は、次の点を確認してください。

  • ライフタイム。証明書の有効な存続時間の値は 21 ~ 30 日間です。
  • ローテーション時間枠の割合。有効なローテーション時間枠の割合は 1〜99 パーセントです。証明書の更新が、証明書の発行の 7 日以上後、期限切れの 7 日以上前に行われるように、証明書の有効期間を基準にしてローテーション ウィンドウの割合を設定する必要があります。
  • 鍵アルゴリズム。有効な鍵アルゴリズムの値は RSA_2048 と ECDSA_P256 です。
  • CA プール。CA プールが存在しないか、正しく構成されていません。CA プールには、有効な CA が少なくとも 1 つ含まれている必要があります。また、呼び出し元には、ターゲットのGoogle Cloud プロジェクトに対する privateca.capools.use 権限が必要です。リージョン証明書の場合、証明書発行構成リソースは CA プールと同じロケーションに作成する必要があります。

Failed to create a managed certificate エラーが発生した場合は、次の点を確認してください。

  • 証明書の作成時に指定した証明書発行の構成リソースが存在している。
  • 呼び出し元に、証明書の作成時に指定した証明書発行の構成リソースに対する certificatemanager.certissuanceconfigs.use 権限がある。
  • 証明書は、証明書発行構成リソースと同じロケーションにあります。

Failed to renew certificate エラーまたは Failed to provision certificate エラーが発生した場合は、次の点を確認してください。

  • Certificate Manager サービス アカウントには、この証明書に使用される証明書発行の構成リソースで指定された CA プールに対する roles/privateca.certificateRequester 権限が付与されています。

    次のコマンドを使用して、ターゲット CA プールの権限を確認します。

    gcloud privateca pools get-iam-policy CA_POOL
    --location REGION
    

    以下のように置き換えます。

    • CA_POOL: ターゲット CA プールの完全なリソースパスと名前
    • REGION: ターゲット Google Cloud リージョン
  • 証明書発行ポリシーが有効になっています。詳細については、発行ポリシーの制限に関連する問題をご覧ください。

発行ポリシーの制限に関連する問題

Certificate Manager が、証明書発行ポリシーによって作成された証明書への変更をサポートしていない場合、証明書のプロビジョニングは失敗し、マネージド証明書の状態は Failed に変わります。この問題を解決するには、次の点を確認してください。

前述の問題では、CA Service がすでに証明書を発行しているため、CA Service の料金に従って課金されます。

エラー Rejected for issuing certificates from the configured CA Pool が表示された場合は、証明書発行ポリシーによって、要求された証明書がブロックされていることを示しています。このエラーを解決するには、次の点を確認してください。

前述の問題では、CA Service が証明書を発行していないため、CA Service から課金されません。

IAP ホスト名の一致に関する問題

Identity-Aware Proxy(IAP)で Certificate Manager を使用しているときに、予期せず The host name provided does not match the SSL certificate on the server というエラーが発生した場合は、そのホスト名に有効な証明書を使用していることを確認します。また、証明書マップに構成した証明書マップエントリを一覧表示します。IAP で使用するすべてのホスト名またはワイルドカード ホスト名には、専用のエントリが必要です。ホスト名の証明書マップエントリがない場合は、証明書マップエントリを作成します。

証明書の選択中にプライマリ証明書マップエントリにフォールバックするリクエストは、IAP によって常に拒否されます。

多視点ドメイン検証の失敗

Google Cloud は、認証局(CA)から Google マネージド証明書をリクエストして、定期的に更新します。Google Cloud が証明書の更新に使用する CA には、Multi-Perspective Issuance Corroboration(MPIC)と呼ばれる多視点ドメイン検証方法が使用されます。このプロセスの一環として、認証局はドメインの DNS 設定を確認し、ロードバランサの認可の場合は、ドメインの IP アドレスの背後にあるサーバーに接続しようとすることで、ドメインの制御を確認します。これらの検証は、インターネット上の複数の観察ポイントから行われます。検証プロセスが失敗すると、Google マネージド証明書は更新されません。その結果、ロードバランサは期限切れの証明書をクライアントに提供し、ブラウザ ユーザーには証明書エラー、API クライアントには接続エラーが発生します。

DNS レコードの構成ミスで多視点ドメイン検証に失敗しないようにするには、次の点に注意してください。

  • ドメインとサブドメインの DNS A レコード(IPv4)と DNS AAAA(IPv6)レコードは、ロードバランサの転送ルールに関連付けられた IP アドレスのみを参照します。レコードに他のアドレスが存在すると、検証が失敗する可能性があります。
  • DNS レコードの検証を行う CA は、複数のロケーションから DNS レコードをクエリします。DNS プロバイダが、すべてのグローバル ドメイン検証リクエストに一貫して応答していることを確認します。
  • GeoDNS(リクエストのロケーションに基づいて異なる IP アドレスを返す)またはロケーションベースの DNS ポリシーを使用すると、レスポンスの不整合が生じ、検証が失敗する可能性があります。DNS プロバイダが GeoDNS を使用している場合は、GeoDNS を無効にするか、すべてのリージョンで同じロードバランサの IP アドレスが返されるようにします。
  • ロードバランサの承認方法を使用して Google マネージド証明書をプロビジョニングする場合は、DNS 構成でロードバランサの IP アドレスを明示的に指定する必要があります。CDN などの中間レイヤが原因で、予期しない動作が発生する可能性があります。IP アドレスには、リクエストパスにリダイレクト、ファイアウォール、CDN を介さずに直接アクセスできる必要があります。詳細については、このドキュメントの CDN の背後にあるロードバランサをご覧ください。
  • 任意の DNS グローバル反映チェッカーを使用して、関連するすべての DNS レコードが世界中で正しく、一貫して解決されているのを確認することをおすすめします。

構成の変更を確認する

DNS レコードを構成したら、新しい証明書を作成して、既存の証明書とともにロードバランサに接続することで、レコードが正しいことを確認できます。この手順では、CA で証明書のプロビジョニング チェックを強制的に即時実行し、数分以内に構成の変更を確認できます。これを行わないと、既存の証明書の自動更新に数日から数週間かかるため、設定に不確実性が生じます。

証明書のステータスが ACTIVE になれば、証明書が発行されたことを示しています。これにより、DNS 構成が正しいことを確認できます。この時点で、同じドメインに 2 つの別々の証明書が存在しないように、以前の証明書を削除することをおすすめします。このプロセスによって、ロードバランサへのトラフィックが中断されることはありません。

新しい証明書は検証ツールとして機能します。この証明書の作成によって、MPIC を使用した多視点ドメイン検証がその設定で正しく機能していることを確認できます。

CDN の背後にあるロードバランサ

CDN が有効になっているロードバランサの場合、リクエストパスの一部のサードパーティ CDN プロバイダが検証リクエストをブロックすることがあります。このエラーは、CDN プロバイダが HTTP(S) トラフィックをアクティブにプロキシしている場合に発生します。

このような場合は、DNS 認証方法を使用して Google マネージド証明書をプロビジョニングすることをおすすめします。後者のアプローチでは、CA がロードバランサに接続する必要はありません。

次のステップ