我面临一个奇怪的问题,看起来像JDK表现得很奇怪。
我编写了一个JAVA应用程序,并使用setEnabledCipherSuites()
为TLS连接设置了我首选的密码列表。
奇怪的是,当我设置单个密码套装(比如TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
)时,TLS握手失败。请注意,客户端和服务器都配置为使用相同的密码。
但是当我设置密码列表时,至少有2个(比如TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
和TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
),一切都像魅力一样。
这是由任何奇怪的JDK问题引起的吗?
编辑问题以在此处为密码TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256添加clientHello,但我找不到相应的serverHello出去。
ClientHello, TLSv1.2 RandomCookie: GMT: 1483351573 bytes = { 236, 104, 69, 5, 204, 179, 32, 84, 44, 7, 84, 102, 15, 73, 185, 254, 42, 128, 113, 217, 120, 205, 199, 195, 162, 120, 161, 41 } Session ID: {} Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256] 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 Extension renegotiation_info, renegotiated_connection: <empty> default-server-worker 3, WRITE: TLSv1.2 Handshake, length = 142 serverin-server-worker 0, READ: TLSv1.2 Handshake, length = 142
java版本是 java版&#34; 1.8.0_102&#34; Java(TM)SE运行时环境(版本1.8.0_102-b14) Java HotSpot(TM)64位服务器VM(版本25.102-b14,混合模式)