1

我正在尝试通过我的 groovy 代码访问部署在 jdk 1.7.0_25上的应用程序的 https xml url。但是 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:握手警报: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 异常?

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

4

0 回答 0