[英]SSLHandshake Exception while using jdk 1.6
我正在尝试使用HTTPClient / URLConnection连接到REST Web服务。 它是一个简单的代码,可以在jdk 1.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();
这是jdk 1.6和1.7之间的已知问题吗? 我们如何解决这个问题? 我不太了解SSL相关问题。
由于以下原因(URL错误,证书损坏或证书无效),可能会发生此问题。
要安装证书,请使用以下语法。
默认密钥库将证书安装到默认密钥库(JDK cacerts)1.从服务器(.cer)导出证书2.打开命令提示符并转到JAVA_HOME / jre / lib / security 3.执行以下命令
视窗
keytool-导入-v-别名-keystore cacerts -file \\ .cer
密码:changeit
Unix的
/ bin / keytool-导入-v-别名-keystore cacerts -file \\ .cer
密码:changeit
定制密钥库将证书安装到定制密钥库1.从服务器(.cer)导出证书2.打开命令提示符,然后转到要创建定制密钥库的位置。3.执行以下命令Windows keytool -import -v- trustcacerts-别名-file \\ .cer -keystore .jks -keypass changeit密码:changeit
Unix / bin / keytool -import -v -trustcacerts -alias -file \\ .cer -keystore .jks -keypass changeit密码:changeit
调用自定义密钥库时添加以下系统变量
-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=changeit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.