TLS オリジンサーバーのエラーメッセージ
Last updated August 09, 2018
TLS を利用しオリジンサーバーに接続する場合, 以下のようなエラーになる場合があります。
ホスト名のアンマッチ
Error: Hostname mismatch
エラー発生原因
オリジンサーバーから配信される TLS サーバー証明書にあるコモンネーム (CN) またはサブジェクトの別名 (SAN) のリストと、オリジンホスト名または、オリジンサーバーの SSL ホスト名設定が一致しません。
解決方法
オリジンサーバーにある証明書の CN または SAN にあるホスト名に Fastly の設定を一致させることで解決することができます。
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- Edit configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
- Origins のリンクをクリックし、Origins 設定画面を開きます。
- 対象ホストの横にある鉛筆マークをクリックしてください。当該ホストの設定を編集するページが表示されます。
- Certificate Hostname の枠に TLS 証明書に関連するホスト名を入力してください。入力する値は、オリジンサーバー上のお客様が発行した証明書にあるコモンネーム (CN) もしくはサブジェクトの別名 (SAN) のどれかと一致している必要があります。例えば、オリジンサーバーの証明書の CN に
www.example.com
が設定されている場合、その値を入力ください。 - Update ボタンをクリックしてください。
- Activate ボタンをクリックしてサービスをデプロイします。
カスタム VCL を利用している場合、backend パラメーターの .ssl_cert_hostname
フィールドを利用することで、証明書に対して一致するホスト名を指定することができます。例:.ssl_cert_hostname = www.example.com;
.
証明書チェーンのアンマッチ
Error: unable to verify the first certificate
Error: self signed certificate
Error: unable to get local issuer certificate
Error: self signed certificate in certificate chain
Error: unable to get issuer certificate
エラー発生原因
Fastly で利用しているどの認証局 (CAs) を使っても検証できなかった証明書チェーンをオリジンサーバーに設定しています。次の2つの理由により発生します:
- 証明書が自己署名または、自己発行証明書であり、証明書検証を可能とするための設定として Fastly に CA 証明書を設定しなかった。
- CA により発行された証明書であるが、Fastly で 当該 CA 証明書を利用していなかった。
解決方法
どちらの場合も、Fastly が証明書検証に利用するように、サービス設定において CA 証明書を追加することで解決します:
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- Edit configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
- Origins のリンクをクリックし、Origins 設定画面を開きます。
- 対象ホストの横にある鉛筆マークをクリックしてください。当該ホストの設定を編集するページが表示されます。
- TLS CA certificate フィールドに PEM フォーマットの CA 証明書を貼り付けてください。
- Update ボタンをクリックしてください。
- Activate ボタンをクリックしてサービスをデプロイします。
カスタム VCL を利用している場合、PEM エンコードの CA 証明書を backend パラメーターの .ssl_ca_cert
に設定することで Fastly が利用する CA を指定することができます。
別の方法としては、Fastly が利用している CA (例、 Globalsign)から新たにサーバー証明書を発行してオリジンサーバーに設定することでも解決できます。
接続の失敗
Error: Gethostbyname
Error: Connection timeout
Error: Connection refused
エラー発生原因と解決方法
Gethostbyname
エラーは、設定したオリジンサーバーのホスト名が NXDOMAIN として応答していることになります。オリジンサーバー名に対する DNS の設定が正しいか再確認してください。
Connection time out
エラーは、オリジンサーバーへの接続でタイムアウトが発生しています。オリジンサーバーのアクセス可否状況とレスポンスの応答時間が適切かを再確認してください。
Connection refused
エラーは、可能性としてファイアウォールやネットワーク ACL によりオリジンサーバーへの接続が拒否されてます。Fastly の IP アドレスリスト をホワイトリストにしているかとオリジンサーバーが Fastly のネットワークからアクセス可能であることを再確認してください。
証明書期限切れ
Error: Certificate has expired
エラー発生原因
オリジンサーバーに設置している証明書が有効期限切れとなっており、有効期限内の証明書に入れ替える必要があります。
解決方法
もし自己署名証明書である場合、保有している秘密鍵で発行した CSR から自分で証明書を作成し、オリジンサーバーにインストールすることで解決します。
もし CA が署名した証明書である場合、保有している秘密鍵で新しい CSR を発行し、CA に署名を依頼します。CA により署名された証明書をオリジンサーバーにインストールすることで解決します。
SSL と 古い TLS プロトコルエラー
Error: Unknown protocol
Error: SSL handshake failure
Error: TLSv1 alert internal error
エラー発生原因
オリジンサーバーが TLS を利用するように設定されていなかったり、または古いプロトコルバージョンのみをサポートしている場合に発生します。Fastly では SSLv2 または SSLv3 はサポートしていません。
解決方法
オリジンサーバーが TLS を利用するように設定されている場合、問題を解決するため、以下の情報をご利用ください:
- オリジンサーバーのソフトウェアが最新であることおよび、ご利用 TLS ライブラリーが最新であることをご確認ください。新しいプロトコルバージョンを明示的に有効にする必要がある場合があります。 Fastly は、TLS 1.2、TLS 1.1およびTLS 1.0をサポートします。.
- オリジンサーバーへの接続性を確認ください。例えば、 TLS 1.2をご利用の場合には、次のコマンドをご利用ください
echo Q | openssl s_client -connect ${IP}:443 -tls1_2
。 他の TLS バージョンをご利用の場合には、-tls1_2
を-tls1_1
や-tls1_0
に変更してください。もし TLS の接続に成功した場合には、証明書、サブジェクト、発行者、などの情報が表示されます。 sslscan
を利用することで、TLS サーバーでサポートしている TLS プロトコルや Cipher が確認できます。
オリジンサーバーが TLS を利用するように設定されてない場合、当該サービスの設定で TLS を利用しないようにし、443ポートでなく80ポートで通信を行うように設定変更をしてください:
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- Edit configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
- Origins のリンクをクリックし、Origins 設定画面を開きます。
- 対象ホストの横にある鉛筆マークをクリックしてください。当該ホストの設定を編集するページが表示されます。
- Enable TLS? で No, do not enable TLS. を選択してください。
- Update ボタンをクリックしてください。
- Activate ボタンをクリックしてサービスをデプロイします。
RC4 cipher エラー
Error: Using RC4 Cipher
エラー発生原因
Fastly がオリジンサーバーに TLS で接続した際に、接続を確立するためにオリジンサーバーで対応している cipher スイートが RC4 cipher のみであったことが原因です。この cipher は一般的に安全ではないと考えられており、利用すべきでないとされています。
解決方法
オリジンサーバーにおいて、サーバーと TLS ライブラリ(例 OpenSSL)の両方を最新にし、cipher スイートをベストプラクティスに合わせることで解決します。RC4 cipher を明示的に除外設定する必要があるかもしれません。
Back to Top