我正在尝试通过我的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异常?
对不起,我对此完全陌生。任何指针和帮助将非常感激。