Web サイトを Web Application Firewall (WAF) に追加した後、Web サイトは HTTP 経由でアクセスできますが、HTTPS 経由ではアクセスできません。たとえば、Web サイトが開けない、証明書が信頼できない、インターフェイスの呼び出しが失敗する、特定の種類のデバイス、OS、またはアプリでエラーが報告される、といった問題が発生することがあります。このトピックでは、これらのアクセス問題のトラブルシューティング方法について説明します。
WAF コンソールでの HTTPS の選択と必要な証明書のアップロードの確認
WAF を使用して HTTPS サービスを保護するには、WAF コンソールで HTTPS を選択し、オリジンサーバーと同じ証明書とプライベートキーをアップロードする必要があります。WAF を Anti-DDoS Pro、Anti-DDoS Premium、Alibaba Cloud CDN などの他のサービスと併用する場合、WAF に証明書とプライベートキーをアップロードする必要があります。他のサービスの証明書とプライベートキーは WAF では有効になりません。WAF 用の証明書とプライベートキーは別途アップロードする必要があります。
コンソールで証明書をアップロードした後、設定が有効になるまで最大 5 分かかることがあります。この間、アクセスが異常になる可能性があります。DNS 名前解決を切り替える前に、hosts ファイルを設定して設定が有効になったことを確認してください。詳細については、「ローカルでの検証」をご参照ください。
証明書チェーンの有効性の確認
無効な証明書チェーンは、HTTPS アクセスの問題でよくある原因です。ほとんどの場合、証明書サービスプロバイダーは、1 つのサーバー証明書と 1 つ以上のルート認証局 (CA) の証明書を含む有効な証明書チェーンを提供します。次の図は、Alibaba Cloud SSL 証明書を含む証明書チェーンの例です。
有効な証明書チェーンが WAF にアップロードされていることを確認してください。複数の証明書を証明書チェーンに結合するには、証明書の内容を 1 つのファイルに連結します。サーバー証明書が証明書チェーンの先頭にあり、その後にルート証明書が続くようにしてください。アップロード可能な証明書チェーンの例を次に示します。
-----BEGIN CERTIFICATE-----
……
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
……
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
……
-----END CERTIFICATE-----証明書チェーンが無効な場合、ブラウザーには証明書が信頼できない旨のメッセージが表示されます。この場合、Android スマートフォン、特定の OS、または特定の種類のアプリから Web サイトにアクセスすると、一部の環境でエラーが発生することがあります。
SSL Installation Checker などのオンラインのサードパーティ製テストツールを使用して、証明書チェーンが有効かどうかを確認できます。詳細については、「SSL Installation Checker」をご参照ください。
オンラインのサードパーティ製テストツールは、Web サイトがマッピングされている宛先に対してのみ、証明書チェーンの状態を確認できます。たとえば、Web サイトが WAF ではなくオリジンサーバーにマッピングされている場合、オンラインのサードパーティ製テストツールを使用して WAF の証明書チェーンが有効かどうかを確認することはできません。
Server Name Indication (SNI) の互換性問題の確認
特定の種類のクライアントまたはアプリが HTTPS 経由で Web サイトにアクセスできず、"SSL handshake failed/error" または "the certificate cannot be trusted" というエラーメッセージが表示される場合、クライアントまたはアプリが Server Name Indication (SNI) をサポートしていない可能性があります。古いバージョンの Android を使用するクライアントや、古いバージョンの Java を使用して開発されたアプリは、SNI と互換性がありません。Internet Explorer、古い携帯電話、およびサードパーティ決済システムのコールバックインターフェイスは SNI と互換性がありません。
Alipay および WeChat のほとんどのブラウザー、アプリ、決済コールバックインターフェイスは SNI をサポートしています。Web サイトがオリジンサーバーにマッピングされている場合はアクセスでき、WAF にマッピングされている場合はアクセスできない場合、SNI の互換性の問題が発生しています。クライアントをアップグレードするか、Web サイトをオリジンサーバーにマッピングすることを推奨します。
詳細については、「SNI互換性に起因するHTTPSアクセス例外 (「証明書が信頼されていません」)」をご参照ください。
Web サイトが Windows Server 2003 または IIS6 サーバーでホストされているかの確認
Windows Server 2003 または IIS6 サーバーでホストされている Web サイトを WAF に追加した後、HTTPS 経由で Web サイトにアクセスすると、HTTP 502 ステータスコードが返されます。このステータスコードが返されるのは、システムの TLS バージョンと暗号スイートが古く、セキュリティ要件を満たしていないためです。TLS と暗号スイートは、WAF のデフォルトの HTTPS バックトゥオリジンアルゴリズムと互換性がありません。HTTPS リクエストをオリジンサーバーに転送する機能は、Windows Server 2003 サーバーでホストされている Web サイトではサポートされていません。Microsoft は、HTTPS Web サイトを Windows Server 2003 サーバーでホストしないことを推奨しています。安全な通信を確保するために、Windows Server 2008 以降を実行するサーバーで Web サイトをホストすることを推奨します。
Diffie-Hellman (DH) キーの長さ要件の確認
Diffie-Hellman (DH) キーが短すぎて長さの要件を満たさない場合、そのキーは安全ではありません。WAF ではこのようなキーはサポートされていません。Mozilla Firefox 51.0.1 などの新しいバージョンの Mozilla Firefox を使用して、WAF を経由せずに Web サイトに直接アクセスすると、次のようなエラーメッセージが表示されます。
この問題を解決するには、JDK などの関連コンポーネントをアップグレードして、DH キーの長さを 2048 ビット以上にしてください。
キーの長さは、使用されるサーバーの暗号化アルゴリズムによって決まります。この長さは、証明書の設定とは無関係です。この問題を解決できない場合は、オリジンサーバーの開発者に連絡するか、関連する解決策を検索してください。次のエラーメッセージに基づいて関連する解決策を検索できます: SSL routines:ssl3_check_cert_and_algorithm:dh key too small。
HTTP が選択されているかの確認
オリジンサーバーで HTTP リクエストを HTTPS リクエストにリダイレクトする機能を有効にする場合は、WAF コンソールで HTTP と HTTPS の両方を選択する必要があります。この状況で HTTP または HTTPS のみを選択した場合、WAF は HTTPS リクエストをオリジンサーバーに転送できず、エラーが発生します。