web-dev-qa-db-ja.com

OpenSSLは、Chrome

次のコマンドでOpenSSLを使用してSparkfunのCDN URLをクエリする場合:

openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443

証明書で返される共通名は*.sparkfun.com、検証に失敗しましたが、Chromeにホストをロードした場合、表示される一般的な名前は*.cloudfront.net

ここで何が起こっているのですか?

私が現在使用している環境は、Squid SSL_Bumpを介してSSLをプロキシしているため、問題が発生しています。これにより、ローカルで信頼されているドメインのCAによって署名された証明書が生成されます。 OpenSSLを使用して新しい証明書が生成されるため、CNが一致しないため、これは上記以外のすべてのドメインで機能します。

[〜#〜] edit [〜#〜]-直接接続されているリモートデータセンター内のサーバー上のOpenSSLでも同じことが発生することを確認しましたプロキシやフィルタリングを含まないインターネットへの接続。

[〜#〜] edit [〜#〜]-この問題は、SNIが原因であると認められていますが、理由に関する情報を記入する必要がありますSquidとSSL_Bumpで問題が発生します。

このプロジェクトは、SSLサーバー名表示(SNI)情報のOriginサーバーへの転送をサポートせず、そのようなサポートをもう少し難しくします。ただし、SNI転送には、このドキュメントの範囲を超える独自の深刻な課題があり、追加された転送の難しさをはるかに上回ります。

取得元: http://wiki.squid-cache.org/Features/BumpSslServerFirst

13
Geoffrey

CloudFrontは、単一のIPで複数の証明書を使用できる方法であるSNIを使用します。 opensslのs_clientコマンドと同様に、すべての最新のブラウザーがこれをサポートしていますが、s_clientはこれを魔法のように行うわけではありません。それを使用するように指示する必要があります:

openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net  -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts
23

Chromeは [〜#〜] sni [〜#〜] をサポートし、サーバーに送信する証明書を指示します。 s_clientコマンドにはありません。

CloudFrontでのSNIの使用に関する詳細は here です。

SNIカスタムSSLを使用する場合、一部の古いブラウザーはSNIをサポートしておらず、CloudFrontとの接続を確立してコンテンツのHTTPSバージョンをロードできないため、一部のユーザーはコンテンツにアクセスできない場合があります。サポートされているブラウザのリストを含むSNIの詳細については、 [〜#〜] faq [〜#〜] ページにアクセスしてください。

そして:

SNIカスタムSSLは、トランスポート層セキュリティプロトコルのSNI拡張に依存しています。これにより、視聴者が接続しようとしているホスト名を含めることにより、複数のドメインが同じIPアドレスでSSLトラフィックを処理できます。専用IPカスタムSSLと同様に、CloudFrontは各Amazon CloudFrontエッジロケーションからコンテンツを配信し、専用IPカスタムSSL機能と同じセキュリティを使用します。 SNIカスタムSSLは、Chromeバージョン6以降(Windows XP以降またはOS X 10.5.7以降で実行))を含むほとんどの最新のブラウザーで機能します。 Safariバージョン3以降(Windows Vista以降またはMac OS X 10.5.6以降で実行)、Firefox 2.0以降、およびInternet Explorer 7以降(Windows Vista以降で実行)。サポートしていない古いブラウザSNIは、コンテンツのHTTPSバージョンをロードするためにCloudFrontとの接続を確立できません。SNIカスタムSSLは、標準のCloudFrontデータ転送およびリクエスト料金を超える追加費用なしで利用できます。

9
David Schwartz