【发布时间】:2011-06-21 10:20:44
【问题描述】:
我正在尝试从受 SSL 保护的网页下载一个简单页面。我正在使用 HtmlUnit 来完成该任务(围绕 HttpClient)。
我尝试下载的网页有一个由 Verisign 签名的正确证书,并且 Verisign 证书存在于 cacerts 文件中(它最初就在那里,但我什至在那里重新导入了整个证书链)。
我的应用程序使用 Glassfish 使用的同一 JVM 作为独立应用程序完美运行。但是,如果我将它部署到 glassfish,我会遇到一个经典的证书问题异常:
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated,
com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:339)
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123)
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147)
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:597)
com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:133)
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1405)
com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1324)
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:303)
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:385)
我已经尝试在 glassfish 中禁用安全管理器,但没有帮助。
这种奇怪行为的原因可能是什么?
提前致谢。
【问题讨论】:
标签: java ssl glassfish httpclient htmlunit