2016-11-08 11 views
0

私はそうのようなJavaのHTTPクライアントを使用してHTTPSサーバからイメージをダウンロードしようとしているが表示されない...は致命的なアラートを受信:握手_、デバッグが原因

System.setProperty("javax.net.debug", "all"); 
System.setProperty("jsse.enableSNIExtension", "false"); 

URL url = new URL("https://secureserver.com/media/hot-jlaw-image.jpg") 
HttpURLConnection urlConn = url.openConnection() 
urlConn.setRequestMethod("GET") 

File myImg = new File("/Users/joe/Downloads/myImage.jpg") 
myImg.append(urlConn.getInputStream()) 

私のクライアントは、Java 8で実行されていますデバッグをオンにすると、私は、だから、こんにちはが送信され、クライアントのように思えると握手が握手失敗に関する警告を除いて送信されますが、何もサーバーから送信されることはありません...以下が含ま何

*** ClientHello, TLSv1.2 
RandomCookie: GMT: 1478629170 bytes = { 23, 147, 128, 164, 76, 36, 0, 143, 175, 43, 227, 154, 16, 212, 209, 112, 224, 227, 0, 109, 196, 178, 231, 43, 112, 198, 36, 235 } 
Session ID: {} 
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, 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_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, 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_EMPTY_RENEGOTIATION_INFO_SCSV] 

main, WRITE: TLSv1.2 Handshake, length = 193 

Caught: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
[Raw read]: length = 5 
0000: 15 03 03 00 02          ..... 
[Raw read]: length = 2 
0000: 02 28            .(
main, READ: TLSv1.2 Alert, length = 2 
main, RECV TLSv1.2 ALERT: fatal, handshake_failure 

を見ます。

This answerには、互換性のない暗号スイートや不完全な信頼パスなど、このエラーが発生する理由がいくつか示唆されており、デバッグを有効にすることが示唆されています。

私の場合、デバッグは原因を明らかにしていません。他に何を試してみるべきですか?

+0

自己署名証明書ですか? –

+0

サーバーからのルートCAがStarfield Servicesのルート証明機関(G2)ですが、JavaクライアントがこのCAを認識できない可能性がありますか? – AbuMariam

答えて

0

問題をめくりは

System.setProperty("jsse.enableSNIExtension", "false");' 
このラインだった

some postsが、これはそのようなサーバでは動作しませんを示しているので、彼らのサーバが仮想されている必要があります。

関連する問題