2

私のNginxサーバーには、見た目が良く、ほとんどのブラウザーで完全に機能するSSL証明書があります。サーバーはhttps://live.evmote.comです。https://live.evmote.com/primusにアクセスすると、サーバーに「ヒット」できます。SSL証明書チェックはこちら: https://www.ssllabs.com/ssltest/analyze.html?d=live.evmote.com

ここまでは順調ですね。問題は、Tesla Model S ブラウザー (車載ブラウザー) に特にあります。「Bad certificate」エラーが発生します。Tesla ブラウザは悪名高く、サポートも不完全です。Tesla から証明書チェーンを表示したり、問題をデバッグしたりする方法はありません。パソコンというより、電化製品です。Tesla 内からの SSL サポートは次のとおりです: http://i.imgur.com/EbIrClM.jpg

Nginx サーバーで、ログに次のエラーが表示されます: SSL3_GET_CLIENT_HELLO:no shared cipher

さて、Tesla SSL レポートとサーバー レポートから明らかなように、共有暗号があります。TLS_RSA_WITH_AES_256_CBC_SHA (0x35) でハンドシェイクすることを期待します。

ここからトラブルシューティングする方法がわかりません。

ありがとう、ライアン

4

2 に答える 2

3

エラー メッセージは誤解を招く可能性があります。間違いなく問題となるのは、ブラウザが SNI をサポートしていないのに、あなたの Web サイトが SNI を必要としているということです。少なくとも、SNI 対応ブラウザーに対して有効な証明書 (live.evmote.com 用) のみを提供します。他のすべてのブラウザーは、適切な証明書検証を行っているブラウザーでは受け入れられない自己署名ワイルドカード証明書を取得します。

于 2015-11-20T06:48:51.083 に答える
0

Java クライアントから同様の問題が発生しました。根本的な原因は、SSL コンテキスト (io.netty.handler.ssl.SslContext) でプロトコルを明示的に設定したことです。

val ctx = io.netty.handler.ssl.SslContextBuilder.forClient()
    ...
    .protocols("SSLv2Hello,TLSv1.2,TLSv1.3".split(","))
    .build()

正確にSSLv2Helloは、ここでは宣言も使用もすべきではありません。

残念ながら、すべてのクライアントを制御することはできません。そのため、さらに調査したところ、この問題は OpenSSL を 1.1.* にアップグレードした後に発生したことがわかりました。

OpenSSL を 1.0.* にダウングレードすると、うまくいきます。Nginx 1.18.0 + OpenSSL 1.0.2u は、SSLv2Hello とのハンドシェイクをエラーなしで、可能な限り最高のプロトコルで処理できました。

于 2021-07-06T14:05:57.117 に答える