使用jdk 1.6时SSLHandshake异常

时间:2015-02-17 10:59:09

标签: java ssl java-7 sslhandshakeexception jdk6

我正在尝试使用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相关问题不太熟悉。

1 个答案:

答案 0 :(得分:0)

由于以下原因(错误的网址,正式证书或无效的证书),可能会发生此问题。

要安装证书,请使用以下语法。

默认密钥库 将证书安装到默认密钥库(JDK cacerts) 1.从服务器(.cer)导出证书 2.打开命令提示符并转到JAVA_HOME / jre / lib / security 3.执行以下命令

<强>窗

  

keytool -import -v -alias -keystore cacerts -file   \ .cer

     

密码:changeit

<强>的Unix

  

/ bin / keytool -import -v -alias -keystore   cacerts -file \ .cer

     

密码:changeit

  1. 选择选项'是'并按Enter
  2. 自定义密钥库 将证书安装到自定义密钥库 1.从服务器(.cer)导出证书 2.打开命令提示符,然后转到要创建自定义密钥库的位置 3.执行以下命令 的视窗 keytool -import -v -trustcacerts -alias -file \ .cer -keystore .jks -keypass changeit 密码:changeit

    <强>的Unix / bin / keytool -import -v -trustcacerts -alias -file \ .cer -keystore .jks -keypass changeit 密码:changeit

    1. 选择选项'是'并按Enter
    2. 调用自定义密钥库

      时添加以下系统变量
      -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