鍍金池/ 問答/Java  HTML/ weblogic 12.1.2 JDK 1.6 SSL 握手失敗

weblogic 12.1.2 JDK 1.6 SSL 握手失敗

問題描述

在使用 weblogic 12.1.2 配置單向 https 后, 通過瀏覽器能夠正常訪問 weblogic, 如果通過反向
代理(Nginx)訪問或者通過 openssl 進(jìn)行故障分析都會(huì)報(bào):SSL 握手失敗, 將 weblogic JDK 從 1.6 更改為 1.7 則沒有此問題, 使用 Tomcat6.0.45 JDK 1.6 也配置單向 https 沒有此類問題。

Nginx 報(bào)錯(cuò)如下:

peer closed connection in SSL handshake while SSL handshaking to upstream, client: 192.168.7.163, server: 192.168.7.163, request: "GET /portal/getServerTime.do HTTP/1.1", upstream:

openssl 故障分析報(bào)錯(cuò):

C:\OpenSSL\bin>openssl s_client -tls1_2 -state -connect 192.168.7.163:20021
CONNECTED(0000018C)
SSL_connect:before/connect initialization
SSL_connect:SSLv3 write client hello A
SSL_connect:failed in SSLv3 read server hello A
9596:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:656:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1515639299
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

這個(gè)問題百度、谷歌都找了沒找到原因,希望有人能為我解惑,我將感激不盡,Thanks?(?ω?)?

回答
編輯回答
晚風(fēng)眠

問題找到了, 過程如下:首先使用如下參數(shù)開啟 weblogic SSL 調(diào)試:

-Dweblogic.security.SSL.verbose=true 
-Dssl.debug=true 
-Dweblogic.StdoutDebugEnabled=true

在請(qǐng)求 weblogic weblogic 日志中有如下信息:

java.security.InvalidAlgorithmParameterException: parameter object not a ECParameterSpec
java.lang.RuntimeException: Could not generate DH keypair

經(jīng)過 google 發(fā)現(xiàn)可以通過禁用 jdk 的 ecc(Elliptic Curve Cryptography) 算法解決

-Dcom.sun.net.ssl.enableECC=false
2018年6月2日 14:39