このトピックでは、証明書アップロードエラー、HTTPS アクセスの異常、デバイスの互換性、HTTPS パフォーマンスの最適化など、CDN の HTTPS 設定に関する一般的な問題とトラブルシューティング方法をまとめています。
現象クイックリファレンス
まず、クライアントで観察された現象に基づいてトラブルシューティングの項目を特定し、対応するセクションの手順に従って項目ごとにトラブルシューティングを行います。
現象またはエラー | 一般的な原因 | トラブルシューティングの項目 |
コンソールで証明書をアップロードする際にエラーが報告される | 証明書または秘密鍵の形式が無効、両者が一致しない、または証明書の有効期限が切れている | |
HTTPS アクセスは失敗するが、HTTP アクセスは正常 | CDN に証明書が設定されていない、または証明書が無効であるか、ドメイン名と一致しない | |
ブラウザが | クライアントと CDN ノードに共通の TLS プロトコルバージョンまたは暗号スイートがない | |
ブラウザに「保護されていません」または証明書リスク警告が表示される | 証明書チェーンが不完全、証明書の有効期限が切れている、自己署名証明書が使用されている、またはページに混合コンテンツが含まれている | |
HTTP アクセスが自動的に HTTPS にリダイレクトされない | 証明書の設定後に強制リダイレクト機能が有効になっていない | |
一部のレガシーデバイスまたは IoT デバイスが HTTPS 経由でアクセスできない | クライアントが SNI をサポートしていない、または証明書チェーンが不完全 | |
HTTPS アクセスが遅い、または TLS ハンドシェイクに時間がかかる | OCSP クエリのタイムアウト、証明書チェーンのサイズが大きい、初期の TLS プロトコルバージョン、またはリモート DNS スケジューリング |
問題が HTTPS 設定レイヤーにあるかどうかの判断
CDN で高速化されたドメイン名を使用する際に HTTPS 関連の問題が発生した場合は、次の方法で問題のレイヤーを特定します。
証明書設定中のエラー:証明書をアップロードまたは選択する際にコンソールが直接エラーを報告する場合、問題は証明書設定に関連しています。「証明書の設定およびアップロードエラー」をご参照ください。
HTTPS アクセスは失敗するが、HTTP は正常な場合:ドメイン名が HTTP 経由でアクセス可能だが、HTTPS 経由で失敗する、または証明書エラーが報告される場合、通常、CDN に SSL 証明書が設定されていないか、証明書の設定が正しくないことが原因です。「HTTPSアクセスの異常」をご参照ください。
ブラウザの証明書リスク警告:HTTPS アクセスは可能ですが、ブラウザに「保護されていません」または証明書リスク警告が表示される場合、問題は証明書の有効性またはウェブページ上の混合コンテンツに関連しています。「ウェブサイトでの証明書リスク警告」をご参照ください。
特定のデバイスでアクセスが失敗する:ほとんどのデバイスは正常に動作するが、特定のデバイス (メンテナンスが終了したレガシーオペレーティングシステムや一部の IoT デバイスなど) が HTTPS 経由でアクセスできない場合、問題は通常、SNI の互換性に関連しています。「デバイスおよびクライアントの互換性」をご参照ください。
HTTP が自動的に HTTPS にリダイレクトされない:HTTPS 証明書が設定され、HTTPS アクセスが機能するが、HTTP アクセスが自動的に HTTPS にリダイレクトされない場合、リダイレクトの設定に問題があります。「強制HTTPSリダイレクト」をご参照ください。
HTTPS 経由のオリジンフェッチが失敗する:クライアントは CDN に正常にアクセスできるが、オリジンフェッチ中に CDN が 5xx エラーを返す、またはオリジン証明書の検証が失敗する場合、オリジンフェッチの設定に問題があります。「オリジンフェッチに関するトラブルシューティングガイド」をご参照ください。
証明書の設定およびアップロードエラー
HTTPS アクセスの異常
強制 HTTPS リダイレクト
デバイスおよびクライアントの互換性
HTTPS パフォーマンスの最適化
一般的な診断コマンド
次のコマンドは、HTTPS 設定の問題を迅速に診断するのに役立ちます。ローカルターミナルで実行できます。
CDN ノードにデプロイされている証明書情報を表示する:証明書のドメイン名 (subject)、発行者、および有効期間 (dates) を出力します。CDN ノードに正しい証明書がデプロイされているかどうかを迅速に確認できます。
openssl s_client -connect <高速化ドメイン名>:443 -servername <高速化ドメイン名> < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates完全な証明書チェーンを表示する:完全な証明書チェーンを出力します。中間証明書が完全かどうかを確認するために使用されます。
openssl s_client -connect <高速化ドメイン名>:443 -servername <高速化ドメイン名> -showcerts < /dev/null 2>/dev/nullHTTPS リクエストの TLS ハンドシェイク詳細を表示する:TLS バージョン、証明書サブジェクト、発行者、有効期限などの主要情報を出力します。
curl -vI https://<高速化ドメイン名> 2>&1 | grep -E "SSL|subject|issuer|expire|TLS|HTTP/"証明書の有効期間を確認する:
openssl x509 -in <証明書ファイル> -noout -dates証明書と秘密鍵が一致しているかどうかを確認する (一般的な方法):2 つの出力行の MD5 値が同一であれば、証明書と秘密鍵は一致しています。
openssl x509 -pubkey -noout -in <証明書ファイル> | openssl md5
openssl pkey -pubout -in <秘密鍵ファイル> | openssl md5ドメイン名解決が CDN を指しているかどうかを確認する:出力は、CDN によって割り当てられた CNAME が指す IP アドレスである必要があり、オリジンサーバーの IP ではありません。
dig <高速化ドメイン名> +shortHTTP リダイレクトチェーンをトレースする:強制 HTTPS リダイレクトおよびリダイレクトループの問題をトラブルシューティングするために使用されます。
curl -vIL --max-redirs 10 http://<高速化ドメイン名> 2>&1 | grep -E "< HTTP|< Location"