繁体   English   中英

使用jdk 1.6时SSLHandshake异常

[英]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. 选择选项“是”,然后按Enter

定制密钥库将证书安装到定制密钥库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

  1. 选择选项“是”,然后按Enter

调用自定义密钥库时添加以下系统变量

-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM