誰も以前にこのエラーに遭遇しましたか?私はSSLを初めて使用しますが、ClientHelloで明らかに間違っていることはありますか?その例外は、ServerHello応答なしでスローされます。どんなアドバイスも大歓迎です。
*** ClientHello, TLSv1
RandomCookie: GMT: 1351745496 bytes = { 154, 151, 225, 128, 127, 137, 198, 245, 160, 35, 124, 13, 135, 120, 33, 240, 82, 223, 56, 25, 207, 231, 231, 124, 103, 205, 66, 218 }
Session ID: {}
Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods: { 0 }
***
[write] MD5 and SHA1 hashes: len = 75
0000: 01 00 00 47 03 01 51 92 00 D8 9A 97 E1 80 7F 89 ...G..Q.........
0010: C6 F5 A0 23 7C 0D 87 78 21 F0 52 DF 38 19 CF E7 ...#...x!.R.8...
0020: E7 7C 67 CD 42 DA 00 00 20 00 04 00 05 00 2F 00 ..g.B... ...../.
0030: 33 00 32 00 0A 00 16 00 13 00 09 00 15 00 12 00 3.2.............
0040: 03 00 08 00 14 00 11 00 FF 01 00 ...........
xxx, WRITE: TLSv1 Handshake, length = 75
[write] MD5 and SHA1 hashes: len = 101
0000: 01 03 01 00 3C 00 00 00 20 00 00 04 01 00 80 00 ....<... .......
0010: 00 05 00 00 2F 00 00 33 00 00 32 00 00 0A 07 00 ..../..3..2.....
0020: C0 00 00 16 00 00 13 00 00 09 06 00 40 00 00 15 ............@...
0030: 00 00 12 00 00 03 02 00 80 00 00 08 00 00 14 00 ................
0040: 00 11 00 00 FF 51 92 00 D8 9A 97 E1 80 7F 89 C6 .....Q..........
0050: F5 A0 23 7C 0D 87 78 21 F0 52 DF 38 19 CF E7 E7 ..#...x!.R.8....
0060: 7C 67 CD 42 DA .g.B.
xxx, WRITE: SSLv2 client hello message, length = 101
[Raw write]: length = 103
0000: 80 65 01 03 01 00 3C 00 00 00 20 00 00 04 01 00 .e....<... .....
0010: 80 00 00 05 00 00 2F 00 00 33 00 00 32 00 00 0A ....../..3..2...
0020: 07 00 C0 00 00 16 00 00 13 00 00 09 06 00 40 00 ..............@.
0030: 00 15 00 00 12 00 00 03 02 00 80 00 00 08 00 00 ................
0040: 14 00 00 11 00 00 FF 51 92 00 D8 9A 97 E1 80 7F .......Q........
0050: 89 C6 F5 A0 23 7C 0D 87 78 21 F0 52 DF 38 19 CF ....#...x!.R.8..
0060: E7 E7 7C 67 CD 42 DA ...g.B.
[Raw read]: length = 5
0000: 15 03 01 00 02 .....
[Raw read]: length = 2
0000: 02 46 .F
{ http://xml.Apache.org/axis/ } stackTrace:
javax.net.ssl.SSLException: Received fatal alert: protocol_version
at com.Sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.Java:190)
at com.Sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.Java:136)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.Java:1806)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:986)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1170)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1197)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1181)
at org.Apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.Java:186)
at
...
On Java 1.8のデフォルトTLSプロトコルはv1.2です。OnJava 1.6および1.7のデフォルトは廃止されたTLS1.0です。このエラーはJava1.8。urlは古いTLS1.0を使用しているため(Yourのように-ClientHello, TLSv1
)。このエラーを解決するには、Java 1.8。のデフォルトのオーバーライドを使用する必要があります。
System.setProperty("https.protocols", "TLSv1");
Oracleブログ の詳細。
mariooshの答えは正しい方向にあるようです。私にはうまくいきませんでした。だから私は見つけた:
独自のJava client を介してHTTPS/SSL経由で接続する問題
使用するもの:
Java.lang.System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
Java 7とTLSv1.2サイトでは必要であると思われます。
私は以下でサイトをチェックしました:
openssl s_client -connect www.st.nmfs.noaa.gov:443
を使用して
openssl version
OpenSSL 1.0.2l 25 May 2017
結果を得ました:
...
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
...
Mac上の古いopensslバージョンは機能せず、macportsを使用しなければならなかったことに注意してください。
PySparkパッケージをインストールしようとしたときに、この問題に遭遇しました。環境変数でTLSバージョンを変更することで問題を回避しました:
echo 'export Java_TOOL_OPTIONS="-Dhttps.protocols=TLSv1.2"' >> ~/.bashrc
source ~/.bashrc
これはプロトコルバージョンの不一致のようです。この例外は通常、クライアントとサーバーで使用されるSSLプロトコルバージョンの間に不一致がある場合に発生します。クライアントは、サーバーでサポートされているプロトコルバージョンを使用する必要があります。
同じエラーが発生していました。 Javaバージョン7の場合、以下が動作します。
Java.lang.System.setProperty( "https.protocols"、 "TLSv1.2");
あなたが答えを見つけたかどうかはわかりませんが、この問題があり、TLSバージョンを1.2にアップグレードする必要がありました
private HttpsURLConnection getSSlConnection(String url, String username, String password){
SSLContext sc = SSLContext.getInstance("TLSv1.2")
// Create a trust manager that accepts all SSL sites
TrustManager[] trustAllCerts = new TrustManager[1]
def tm = new X509TrustManager(){
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0]
}
}
trustAllCerts[0] = tm
sc.init(null, trustAllCerts, new SecureRandom())
HttpsURLConnection connection = (HttpsURLConnection) getConnection(url, username, password)
connection.setSSLSocketFactory(sc.getSocketFactory())
return connection
}
Java_OPTSの最後のエントリの後に次の行をcatalina.batに追加して試すことができます。
set Java_OPTS =%Java_OPTS%-Dhttps.protocols = TLSv1.2 -Djdk.tls.client.protocols = TLSv1.2
これは、TLSv1ハンドシェイクを送信したが、SSLv2プロトコルを使用してメッセージを送信したという事実によるものです。
xxx, WRITE: TLSv1 Handshake, length = 75
xxx, WRITE: SSLv2 client hello message, length = 101
これは、サーバーがTLSv1プロトコルが使用されることを予期しており、接続を受け入れないことを意味します。使用するプロトコルを指定するか、関連するコードを投稿してみてください