2017-06-05 6 views
0

を私は(クライアントなど)SSL接続を作っていますし、あなたがTLSv1.2を使用して、管轄の強力なバージョンを有効にした場合this Oracle articleに応じて、以下の2つのサイファースーツはJDK7でサポートされていますポリシー安全な接続を作成するときに、2つのCYPHERアルゴリズムが無視されるただしTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 JDK7のSSL conenction問題:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

    • Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 
      Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 
      Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 
      Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 
      Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 
      **Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384** 
      Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 
      Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 
      **Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256** 
      Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 
      Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 
      Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 
      Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 
      Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA256 
      Allow unsafe renegotiation: false 
      Allow legacy hello messages: true 
      Is initial handshake: true 
      Is secure renegotiation: false 
      %% No cached client session 
      *** ClientHello, TLSv1.2 
      RandomCookie: GMT: 1496192143 bytes = { 166, 200, 78, 178, 69, 10, 17, 174, 212, 142, 188, 108, 136, 152, 242, 222, 94, 231, 4, 86, 2, 99, 202, 4, 204, 130, 236, 120 } 
      Session ID: {} 
      Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV] 
      Compression Methods: { 0 } 
      Extension elliptic_curves, curve names: {secp256r1, sect163k1, sect163r2, secp192r1, secp224r1, sect233k1, sect233r1, sect283k1, sect283r1, secp384r1, sect409k1, sect409r1, secp521r1, sect571k1, sect571r1, secp160k1, secp160r1, secp160r2, sect163r1, secp192k1, sect193r1, sect193r2, secp224k1, sect239k1, secp256k1} 
      Extension ec_point_formats, formats: [uncompressed] 
      Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA224withECDSA, SHA224withRSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA, MD5withRSA 
      Extension server_name, server_name: [host_name: api.sms.optus.com.au] 
      *** 
      main, WRITE: **TLSv1.2** Handshake, length = 222 
      main, READ: TLSv1.2 Alert, length = 2 
      main, RECV TLSv1 ALERT: fatal, handshake_failure 
      main, called closeSocket() 
      main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
      ERROR [main] (TestRest.java:42) - Error : 
      

      私はTLSv1.2

      を設定している
      • -Dhttps.protocols = TLSv1.2私は "JCE無制限強度の管轄ポリシーファイル" と私がインストールされている

      次のコードを実行して正常にインストールされたことを確認できます。

      try { 
          int maxAllowedKeyLength = Cipher.getMaxAllowedKeyLength("AES"); 
          System.out.println("AES: " + maxAllowedKeyLength); 
          return maxAllowedKeyLength >= 256; 
      } catch (NoSuchAlgorithmException e) { 
          return false; 
      } 
      

      私は2つの暗号アルゴリズムがJDK7ではサポートされていないと思いますが、誤ってOracleの記事に記載されていますか?

      注:

      • 私はJDK8でc0odeを実行する場合は問題ありません。
      • 私はfirewalの後ろにあり、プロキシをセットアップする必要がありました。しかし、私はJDK8で問題なく接続できるので、その関連はないと思う。任意の仕立てが行われる前
  • +0

    によって除去されるため、

    Java8は、暗号スイートの多くがあります。問題はありません。これらの2つはなぜ問題なのですか? – EJP

    +0

    @ EJP残念ながら、ホストは4つの暗号服しか受け入れません。そのうち2つはJDK7では完全にサポートされておらず、残りの2つは記事で言及しているものです。 [checkhere](https://www.ssllabs.com/ssltest/analyze.html?d=api.sms.optus.com.au) – Reza

    +1

    うーん、私は結果を確認してくれて、JDK 1.7.0_25、1.8.0で動作します。 – EJP

    答えて

    1

    「有効」暗号リストの初期設定がSSLContextImpl.initで計算されており、Java7クライアントで最初のプロトコルのリストが唯一のSSLv3とTLSv1の(とはへjdk.tls.disabledAlgorithmsを設定java.security最近のバージョンでありますPOODLEのためにSSLv3を削除する)、これにより、このサーバが同意するTLSv1.2のみのすべての暗号が無効になります。これは、実際のハンドシェイクが始まる前に、トレース内のIgnoring unsupportedメッセージのソースです。

    HttpsURLConnectionを使用している場合、あなたは両方https.protocolshttps.cipherSuites(資本Sを注意してください)syspropsを設定する必要があります。 SSLSocketを直接使用している場合は、Qでハイライト表示した暗号スイートを少なくとも1つ(少なくとも)​​と.setEnabledCipherSuitesの両方を含む.setEnabledProtocolsと呼び出すか、同等の処理を行うために工場を代用/ラップする必要があります。クライアントとサーバーの両方のために、デフォルトのプロトコルの一覧が再びのSSLv3とのSSLv3、TLSv1の、TLSv1.1、TLSv1.2は、jdk.tls.disabledAlgorithms

    +0

    私は、Spring Resttemplateを使用していて、HttpsURLConnectionを使用して接続を行っていました。不足している暗号化ツールを使ってhttps.cipherSuitesを設定するだけで問題は解決されました。ありがとう。 – Reza