我正在尝试使用HTTPClient / URLConnection连接到REST REST服务。它是一个简单的代码,在JDK1.7中运行良好,但在使用jdk1.6时抛出一个SSLHandshake异常。
IO Exception: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching your.domain.name.com found.
...
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching your.domain.name.com found.而且,代码是非常基本的。
URL url = new URL("https://your.domain.name.com/services/");
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setRequestProperty("Authorization", "Basic " + encodedCredenials);
urlConnection.setRequestProperty("Content-Type", "application/vnd.mtdomain.gold+json");
InputStream is = urlConnection.getInputStream();这是JDK1.6和1.7之间已知的问题吗?我们怎么才能把这个修好?我不太熟悉SSL相关的问题。
发布于 2015-09-08 04:55:49
此问题可能由于以下原因而发生(错误的url、波纹证书或无效证书)。
若要安装证书,请使用以下语法。
默认Keystore安装证书到默认Keystore (JDK仙人掌) 1.从服务器(.cer) 2导出证书。打开命令提示符,转到JAVA_HOME/jre/lib/security 3。
Windows
钥匙工具-import -v -alias -keystore cacerts -file .cer 密码:转换
Unix
/bin/keytool -import -v -alias -keystore cacerts -file .cer 密码:转换
自定义Keystore安装证书到自定义keystore 1.从服务器( .cer ) 2导出证书。打开命令提示符并进入要创建自定义密钥库3的位置。执行以下命令:Windows密钥工具-import -v -trustcacerts -alias -file .cer .jks -keypass转换密码:
Unix /bin/ keytool -import -v -trustcacerts -alias -file .cer -keystore .jks -keypass转换密码
在调用自定义Keystore时添加以下系统变量
-Dweblogic.security.SSL.ignoreHostnameVerification=true -Dweblogic.security.TrustKeyStore=CustomTrust -
Dweblogic.security.CustomTrustKeyStoreFileName=<location>/<keystore-name>.jks -Djavax.net.ssl.trustStore=<location>/<keystore-name>.jks -Djavax.net.ssl.trustStorePassword=changeithttps://stackoverflow.com/questions/28560406
复制相似问题