3

「TLSv1」プロトコルと次の暗号スイートをサポートする「https://」サイトに接続しようとしていますが、

TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39) DH 4096 ビット
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33) DH 4096 ビット

Apache の httpclient を使用 (Java プラットフォーム - JDK 1.7)

JDK1.8 (DH パラメータが 1024 ビットを超える暗号スイートをサポートしています) で問題なく動作します。

しかし、JDK 1.7 では失敗し、次の例外があります。

main, handling exception: java.lang.ArrayIndexOutOfBoundsException: 64
%% Invalidated:  [Session-1, TLS_DHE_RSA_WITH_AES_128_CBC_SHA]
main, SEND TLSv1 ALERT:  fatal, description = internal_error
main, WRITE: TLSv1 Alert, length = 2
[Raw write]: length = 7
0000: 15 03 01 00 02 02 50                               ......P
main, called closeSocket()
main, IOException in getSession():  javax.net.ssl.SSLException: java.lang.ArrayIndexOutOfBoundsException: 64

こちらの回避策で提案されているように、

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6521495、Bouncy Castle Provider を使用してみましたが、それでも同じ例外が発生します。

どんな助けでも素晴らしいでしょう。ありがとう。

4

1 に答える 1

6

問題は、TLS v1.2 と互換性がある一方で、TLS v1 で 2048 DH キーを使用しているため、次の 3 つの方法で解決できることです。

1) JDK のバージョンを 1.8 にアップグレードします。

2) サーバーからのすべての DHE 暗号を無効にする

3) サーバーで 1048 DH キーを使用する

詳しくはこちら

于 2016-10-03T10:05:12.540 に答える