2015-10-05 31 views
0

我有這樣的代碼:IBM JDK 7 SSL連接不工作

String auth = username + ":" + password; 
URL url = new URL(hostname + path); 
TrustManager[] trustAllCerts = new TrustManager[] { new SSLTrustManager() }; 
HostnameVerifier hostnameVerifier = new SSLHostnameVerifier(); 

SSLContext sc = SSLContext.getInstance("SSL"); 
sc.init(null, trustAllCerts, new java.security.SecureRandom()); 

HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); 

HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
conn.setRequestProperty("Authorization", "Basic " + auth); 
conn.connect(); 

我遇到的問題是這樣的:與IBM JDK 6,一切工作正常,與IBM加多寶7失敗,出現錯誤:

IBMJSSEProvider2 Build-Level: -20110720 
keyStore is: C:\Program Files\IBM\Java70\jre\lib\security\cacerts 
keyStore type is: jks 
keyStore provider is: 
init keystore 
SSLContextImpl: Using X509ExtendedKeyManager com.ibm.jsse2.tc 
SSLContextImpl: Using X509TrustManager com.ibm.cmsng.iem.SSLTrustManager 
trigger seeding of SecureRandom 
done seeding SecureRandom 
Installed Providers = 
    IBMJSSE2 
    IBMJCE 
    IBMJGSSProvider 
    IBMCertPath 
    IBMSASL 
    IBMXMLCRYPTO 
    IBMXMLEnc 
    IBMSPNEGO 
    SUN 
JsseJCE: Using KeyAgreement ECDH from provider IBMJCE version 1.7 
JsseJCE: Using signature SHA1withECDSA from provider IBMJCE version 1.7 
JsseJCE: Using signature NONEwithECDSA from provider IBMJCE version 1.7 
JsseJCE: Using KeyFactory EC from provider IBMJCE version 1.7 
JsseJCE: Using KeyPairGenerator EC from provider TBD via init 
JsseJce: EC is available 
JsseJCE: Using cipher AES/CBC/NoPadding from provider TBD via init 
JsseJCE: Using SecureRandom from provider IBMJCE version 1.7 
java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 

可能是什麼問題? 我使用相同的主機:端口組合,沒有更改。 IBM JDK中從6版到7版的SSL支持有何變化?我也嘗試過使用Oracle的java 8,並且再次沒有成功。

回答

1
java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 

該問題與TLS無關,但TCP連接已失敗。 可能是因爲您在不同的系統上使用Java 6和Java 7程序,而第二個程序沒有連接到目標主機。也可能IPv4連接起作用,但不起作用,但名稱服務器返回IPv4和IPv6,而Java 6使用IPv4,而Java 7則使用IPv6地址(並失敗)。

+0

作品像一個魅力:)謝謝先生。 –