当我尝试在HTTPS地址后面调用Web服务时,我遇到了一个奇怪的问题。
我已通过-Djavax.net.ssl-properties
指定了我的密钥库和信任库。
当我使用一个非常简单(非TomEE)命令行程序执行HTTP-GET
请求的那些商店时,它工作正常,我得到一个响应,没有后顾之忧,所以问题似乎不是我的存储
使用SOAP UI和相同的商店,它仍然可以工作,我从端点得到响应,所以它不是端点,它是我。
现在,当TomEE尝试创建一个Dispatcher时,我得到“证书不好”,我不明白为什么。我启用了SSL调试,它告诉我它使用我指定的商店但仍然没有骰子。是否有偷偷摸摸的事情发生?
这是抛出的异常:http-bio-8080-exec-3, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
尝试将自己的SSLSocketFactory添加到调度程序没有结果:
disp.getRequestContext().put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", new SoapSSLSocketFactory(socketFactory));
此外,在HTTP连接上设置默认设置不起作用,这似乎只是被绕过:HttpsURLConnection.setDefaultSSLSocketFactory(new SoapSSLSocketFactory(socketFactory));