IBM JDK 7 SSL连接不工作

问题描述:

我有这样的代码: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,并且再次没有成功。

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

作品像一个魅力:)谢谢先生。 –