javax.net.ssl.SSLProtocolException:握手警报:通过groovy连接到https网址时无法识别的名称

时间:2014-03-19 08:41:34

标签: java groovy ssl-certificate client-certificates ss

我正在尝试通过我的groovy代码访问部署在jdk 1.7.0_25 上的应用程序的https xml网址。但是groovy在groovy代码中抛出了这一行的异常 -

 URL url = new URL("https://my.company.com//path/to/xml")
 URLConnection urlConnection = url.openConnection()
 def xml = new XmlSlurper().parse(url.toString())
 //Parse the XML here....and perform operations

异常javax.net.ssl.SSLProtocolException:handshake alert:unrecognized_name

作为一种解决方法,我尝试将证书 - my.company.com从证书层次结构 my.company.cer 通过浏览器导入到我的开发环境设置的本地密钥库。以下是命令 -

1. keytool -importcert -alias "mycompany-ca" -file my.company.cer
2. keytool -import -file my_company.cer -keystore "C:\Program Files\Java\jdk1.6.0_30\jre\lib\security\cacerts" -trustcacerts -storepass "changeit"

证书已成功添加到本地信任库 - “jdk1.6.0_30 \ jre \ lib \ security \ cacerts”。我可以通过groovy代码通过https url访问xml然后。所以我尝试在服务器环境的本地密钥库中进一步导入相同的证书。

但问题是这种解决方法是随机工作的。有时我可以通过https url从服务器成功访问此xml,有时我会随机点击相同的错误,而不会对脚本进行任何更改。

我是否需要将根证书导入服务器环境的本地信任库?

如何在我的groovy中处理这个SSL异常?

对不起,我对此完全陌生。任何指针和帮助将非常感激。

0 个答案:

没有答案