Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为javax.xml.ws.Service配置SSL套接字?_Ssl_Authentication_Client_Wsdl - Fatal编程技术网

如何为javax.xml.ws.Service配置SSL套接字?

如何为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应用程序,它调用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。
谢谢你的回复

如果您按照答案进行操作,并确保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的一个问题:您可以标记这个问题并要求迁移它。)