如何为javax.xml.ws.Service配置SSL套接字?
我有一个tomcat应用程序,它调用IIS托管的启用ssl、启用客户端身份验证的Web服务 这个Tomcat应用程序与多个Web服务对话,可能每个Web服务都需要客户端身份验证和PKI身份验证 对于IIS Web服务,wsdl url可以更改,因此我使用 通过传递wsdl的url来构造javax.xml.ws.Service(url,qname)构造函数 问题是,我需要使用带有自定义客户机密钥的SSL调用上述内容。如何告诉上述构造函数使用我用自定义KeyManager创建的sslsocket?我不想用 HttpsURLConnection.setDefaultSSLSocketFactory,这将强制执行其他传出ssl连接,以遵循IIS Web服务专用的my keymanager。如何为javax.xml.ws.Service配置SSL套接字?,ssl,authentication,client,wsdl,Ssl,Authentication,Client,Wsdl,我有一个tomcat应用程序,它调用IIS托管的启用ssl、启用客户端身份验证的Web服务 这个Tomcat应用程序与多个Web服务对话,可能每个Web服务都需要客户端身份验证和PKI身份验证 对于IIS Web服务,wsdl url可以更改,因此我使用 通过传递wsdl的url来构造javax.xml.ws.Service(url,qname)构造函数 问题是,我需要使用带有自定义客户机密钥的SSL调用上述内容。如何告诉上述构造函数使用我用自定义KeyManager创建的sslsocket?我
谢谢你的回复 如果您按照答案进行操作,并确保Tomcat的
不使用javax.net.ssl
属性,那么为默认密钥管理器设置密钥库可能不是世界末日HttpsURLConnection
s将仅向请求它的服务器进行身份验证(服务器始终请求客户端证书身份验证),并从CA列表中请求与证书颁发者匹配的客户端证书。这在实践中可能不是什么大问题
如果您认为这是一个太大的问题,那么似乎有一个名为com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory
。其文件如下:
在BindingProvider.getRequestContext()上设置此属性以启用
HttpsURLConnection.setSSLSocketFactory(SSLSocketFactory)。财产
设置如下:
SSLSocketFactory sslFactory=。。。;映射ctxt=
((BindingProvider)proxy.getRequestContext();
ctxt.put(SSL插座工厂、SSL工厂)
此属性为实验性质,如有更改,恕不另行通知
将来
这不是和你之前的问题一样,有更多的细节吗?(正如我在那里写我的答案时所怀疑的那样,这正成为StackOverflow的一个问题:您可以标记这个问题并要求迁移它。)