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地址(并失败)。
作品像一个魅力:)谢谢先生。 –