我必须调用具有HTTPS客户端身份验证的SOAP服务。
我已经通过keyStore文件将客户端证书(从托管服务器的公司获得)导入到其中。我还将服务器证书(从服务器下载)导入到我的trustStore中。我已经将'javax.net.ssl.keyStore‘和'javax.net.ssl.keyStorePassword’设置为适当的值。
当我从一个简单的java客户端(包括一些额外的jars)调用web服务时,这个调用可以工作,并且从服务器得到一个结果。
当我从glassfish-4 (相同的java、相同的keyStore、相同的trustStore、相同的'javax.net.ssl.keyStore‘值等)调用web服务时,我会得到一个异常的javax.net.ssl.SSLHandshakeException HTTP传输错误: javax.net.ssl.SSLHandshakeException: Received :unknown’。
在这两种情况下,我使用相同的java、相同的密钥存储库、相同的trustStore。第一个版本没有玻璃鱼,因此证书似乎是可以的。第二个版本的玻璃鱼没有。
玻璃鱼-4有什么特别之处吗?这会是其他(第三方)库的问题吗?是否有其他HTTP/SSL设置可供我试用?还能是什么?
有什么主意吗?谢谢你帮忙。
发布于 2017-10-31 14:04:26
我发现了这个问题。
Glassfish需要附加的VM属性'com.sun.enterprise.security.httpsOutboundKeyAlias'.这必须设置为客户端证书的别名。
对于标准,这是在domain.xml中在java区域设置的。对于标准,这是设置为-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as.
将值s1as更改为证书的别名。
https://stackoverflow.com/questions/46978175
复制相似问题