TLSv1ハンドシェイクの失敗

nablex:

(免責事項:私はその想像力にとらわれず、セキュリティの専門家でもWindowsの専門家でもありません)

セットアップ:

  • 私たちの側のサーバー:Windows 2003サーバー上のjava 1.6(すでにセキュリティファイルにbouncycastleが追加されています)
  • サードパーティクライアント:biztalkを搭載したWindows 2008サーバー
  • 再ネゴシエーション攻撃によって導入されたすべての再ネゴシエーションシステムプロパティは、サーバー側で「有効」になっています(私が知っていると安全ではありません)。

理想的にはこれを最後に修正したいのですが、必要に応じてクライアントに修正を提案することができます。

クライアントサーバーはHTTPS接続を介してサーバーに接続する必要がありますが、常に失敗します。wiresharkは次の会話を示します。

> TLSv1: Client Hello
< TLSv1: Alert (21): Unexpected Message

RFC(http://www.ietf.org/rfc/rfc2246.txt)に従って、alert(21)は失敗した復号化を参照しており、wiresharkで確認できることから、クライアントによって提案された暗号は実際にはありませんJRE 1.6でサポート(http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuitesによる)エラーを再現して、より詳しく調査できるようにするため、他のソフトウェアでテストしました:

  • 「https」が選択されたWindows XPのwfetchは、SSLv2で初期クライアントハンドシェイクを実行し、サーバーはTLSv1に切り替えて応答します。これは機能します
  • 初期ハンドシェイクに「TLSv1」を使用するように構成されたWindows XPのwfetchは、biztalkサーバーと同じように失敗します
  • 「https」が設定されたWindows 2008のwfetchは、初期ハンドシェイクに「TLSv1」を使用し、biztalkサーバーと同じように失敗します
  • IE(Windows XPの場合)は、最初に同じ失敗した結果でTLSv1ハンドシェイクを試行しますが、すぐに機能するSSLv3を使用して再試行します(この時点で、すべてのMicrosoftソフトウェアはHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ Schannel)
  • firefoxは会話全体にSSLv3を使用するため、問題ありません
  • OpenSSLはSSLv2で初期ハンドシェイクを実行し、サーバーは応答するとTLSv1に切り替えます。そこで問題はありません。
  • OpenSSLはTLSv1でも最初のハンドシェイクを強制することができ、27の暗号のリストを提供し(Windowsベースのソフトウェアによって提案された11の暗号とは対照的)、問題なく接続できます。

私の訓練されていない目には、これは互換性のない暗号命題が根本的な原因であり、WindowsがJVM(TLSv1の場合)でサポートされていない暗号スイートのみをサポートするという考えを強化します。弾む城をjava.securityファイルの追加プロバイダーとしてインストールしましたが、役に立ちません。私は高低を検索しましたが、websphereがTLSv1のWindows暗号をサポートしている可能性があるが、それをテストするためにスタンドアロンプ​​ロバイダーをダウンロードする方法がないという参照のみを見つけました。JRE 1.7は、JVMで実行しているソフトウェアではサポートされていないため、アップグレードはオプションではありません(おそらく、セキュリティプロバイダーを安全にダウングレードできますか?まだダウンロードが見つかりません)追加する方法が見つかりませんc ++コードを作成する前にウィンドウを暗号化します(上記のレジストリ設定をいじってみました)。

結論として、私は次のいずれかがそれを修正するかどうか、そしてそれらがどのように達成されるべきかを疑問に思います:

  • Windowsによって提案されたTLSv1の暗号を使用できるプロバイダーをjvmに追加する
  • どういうわけかクライアントにSSLv3(できればSSLv2ではない)で初期ハンドシェイクを強制するか、少なくともTLSv1ハンドシェイクが失敗した場合は再試行する
  • どういうわけか、クライアントウィンドウにTLSv1のJVMサポート暗号を追加します

もちろん、他のソリューションも評価されます。

編集する

JavaのバージョンはJava version (64 bit): 1.6.0_19-b04です。

提案されている暗号のリストは次のとおりです。

  • TLS_RSA_WITH_RC4_128_MD5
  • TLS_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_WITH_DES_CBC_SHA
  • TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
  • TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
  • TLS_RSA_EXPORT_WITH_RC4_40_MD5
  • TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
  • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
  • TLS_DHE_DSS_WITH_DES_CBC_SHA
  • TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA

無制限の強度の暗号化ポリシーファイルがインストールされます。javax.net.debug=allコンソールからサーバーを設定して起動しようとしましたが、追加の出力は表示されませんでした。sun.security.ssl.allowUnsafeRenegotiation=true無駄に設定しました。

編集2

使用しているソフトウェアは、デフォルトの代わりにHTTPのカスタムスタックを使用していることがわかりました。TLSリクエストのどの部分がエラーをトリガーしたかは正確にはわかりませんが、ほとんどのTLSv1ハンドシェイクが成功したため、問題を解決するように見える修正が発行されました。

フィードバックをお寄せいただきありがとうございます。無駄な検索であると興味深いものでした。生活し、学びます。

nablex:

使用しているソフトウェアは、デフォルトの代わりにHTTPのカスタムスタックを使用していることがわかりました。TLSリクエストのどの部分がエラーをトリガーしたかは正確にはわかりませんが、ほとんどのTLSv1ハンドシェイクが成功したため、問題を解決するように見える修正が発行されました。

フィードバックをお寄せいただきありがとうございます。無駄な検索であると興味深いものでした。生活し、学びます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

TLSv1接続がハンドシェイクの失敗で失敗しました

分類Dev

ハンドシェイク中の「tlsv1アラート内部エラー」

分類Dev

相互認証でのTLSv1ハンドシェイク問題のトラブルシューティング方法は?

分類Dev

ClientHello後のSSLハンドシェイクの失敗

分類Dev

Logstash使用時のSSLハンドシェイクの失敗

分類Dev

OpenSSL :: SSL :: SSLError HomebrewOpenSSLでのハンドシェイクの失敗

分類Dev

TLS接続ハンドシェイクの失敗

分類Dev

WebsocketSSLハンドシェイクの失敗

分類Dev

wgetsslアラートハンドシェイクの失敗

分類Dev

Spring RestTemplate:SSLハンドシェイクの失敗

分類Dev

SSL致命的エラー-ハンドシェイクの失敗(40)

分類Dev

OpenSSLエラー-ハンドシェイクの失敗

分類Dev

SSLを使用したRMI:ハンドシェイクの失敗

分類Dev

Rails omniauth facebookSSLハンドシェイクの失敗

分類Dev

WeblogicSSLハンドシェイクの失敗

分類Dev

MosquittoOpenSSLハンドシェイクの失敗。

分類Dev

サーバハロー前にハンドシェイクの失敗

分類Dev

JDK11でのTLS1.3でのハンドシェイクの失敗

分類Dev

Open LibertyでのmpRestClient証明書認証ハンドシェイクの失敗

分類Dev

WebRTC DTLS-SRTPOpenSSLサーバーのハンドシェイクの失敗

分類Dev

Ubuntu 14.0.4 OpenSSL1.0.1fおよびTLSv1_2016でのハンドシェイクエラー

分類Dev

WebViewのHTTPSハンドシェイクに失敗しました

分類Dev

pythonはsslハンドシェイクの失敗を要求します

分類Dev

OpenSSLエラーアラートハンドシェイクの失敗

分類Dev

FacebookへのPhantomjs接続がSSLハンドシェイクに失敗する

分類Dev

「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

分類Dev

「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

分類Dev

SAPSSLハンドシェイクが失敗しました

分類Dev

XamarinでSSLハンドシェイクが失敗する

Related 関連記事

  1. 1

    TLSv1接続がハンドシェイクの失敗で失敗しました

  2. 2

    ハンドシェイク中の「tlsv1アラート内部エラー」

  3. 3

    相互認証でのTLSv1ハンドシェイク問題のトラブルシューティング方法は?

  4. 4

    ClientHello後のSSLハンドシェイクの失敗

  5. 5

    Logstash使用時のSSLハンドシェイクの失敗

  6. 6

    OpenSSL :: SSL :: SSLError HomebrewOpenSSLでのハンドシェイクの失敗

  7. 7

    TLS接続ハンドシェイクの失敗

  8. 8

    WebsocketSSLハンドシェイクの失敗

  9. 9

    wgetsslアラートハンドシェイクの失敗

  10. 10

    Spring RestTemplate:SSLハンドシェイクの失敗

  11. 11

    SSL致命的エラー-ハンドシェイクの失敗(40)

  12. 12

    OpenSSLエラー-ハンドシェイクの失敗

  13. 13

    SSLを使用したRMI:ハンドシェイクの失敗

  14. 14

    Rails omniauth facebookSSLハンドシェイクの失敗

  15. 15

    WeblogicSSLハンドシェイクの失敗

  16. 16

    MosquittoOpenSSLハンドシェイクの失敗。

  17. 17

    サーバハロー前にハンドシェイクの失敗

  18. 18

    JDK11でのTLS1.3でのハンドシェイクの失敗

  19. 19

    Open LibertyでのmpRestClient証明書認証ハンドシェイクの失敗

  20. 20

    WebRTC DTLS-SRTPOpenSSLサーバーのハンドシェイクの失敗

  21. 21

    Ubuntu 14.0.4 OpenSSL1.0.1fおよびTLSv1_2016でのハンドシェイクエラー

  22. 22

    WebViewのHTTPSハンドシェイクに失敗しました

  23. 23

    pythonはsslハンドシェイクの失敗を要求します

  24. 24

    OpenSSLエラーアラートハンドシェイクの失敗

  25. 25

    FacebookへのPhantomjs接続がSSLハンドシェイクに失敗する

  26. 26

    「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

  27. 27

    「sslv3アラートハンドシェイクの失敗:SSLアラート番号40」でSSLハンドシェイクが失敗する

  28. 28

    SAPSSLハンドシェイクが失敗しました

  29. 29

    XamarinでSSLハンドシェイクが失敗する

ホットタグ

アーカイブ