GAE上的Web服务的双向SSL(java)
发布时间:2020-12-14 21:31:04 所属栏目:资源 来源:网络整理
导读:我们需要在Google App Engine上实施双向SSL,我们将使用JAX-WS发送Web服务请求发送给需要双向SSL认证的服务器。 我们如何为传出的Web服务请求设置双向SSL? 我们知道javax.net.ssl *在App Engine环境中被禁止。 以下是我们的代码示例: @WebService(name="Li
我们需要在Google App Engine上实施双向SSL,我们将使用JAX-WS发送Web服务请求发送给需要双向SSL认证的服务器。
我们如何为传出的Web服务请求设置双向SSL? 我们知道javax.net.ssl *在App Engine环境中被禁止。 以下是我们的代码示例: @WebService(name="ListenerSoap",targetNamespace = "http://example.com/Listener.Wsdl") @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) public interface ListenerSoap { @WebMethod(operationName = "Ping",action="http://example.com/Listener.Wsdl#Ping") public void ping(); } @WebServiceClient(name="Listener",targetNamespace="http://example.com/Listener.Wsdl",wsdlLocation = "https://example.com/Listener.asmx?WSDL") public class Listener extends Service { public ListenerSoap getListenerSoap() { return super.getPort(new QName("http://example.com/Listener.Wsdl","ListenerSoap"),ListenerSoap.class); } } 以及上面使用的代码的示例: ListenerSoap soap = new Listener().getListenerSoap(); soap.ping(); 我认为我们可以将DataStore中所需的密钥库或任何证书存储为二进制对象(尽管如何上传它们对我来说仍然是一个空白)。 我们如何才能设置此Web服务所需的必需值,以使用双向SSL进行身份验证? 感谢任何帮助 更新: 通过研究,我看到这是如何在传统的服务器上完成的(一个具有文件系统访问权限): ListenerSoap soap = new Listener().getListenerSoap(); ((BindingProvider) soap).getRequestContext().put("javax.net.ssl.keyStore","client_cert.p12" 然而,在这种方法中,client_cert.p12预计在文件系统上。 另外,GAE上不允许使用SSLSocketFactory,SSLContext,KeyManager和KeyManagerFactory。 更新: 截至GAE SDK 1.7.7版。现在应该是可以的: Similarly,Java developers can now use the javax.net.ssl package to make outbound SSL connections. GAE 1.7.7 SDK Release Notes 解决方法
从我对SSL授权的限制知识,似乎在这里可能会缺少一些非常重要的东西;证书。双向SSL要求客户端和服务器证书位于您的密钥库中,可以是自签名证书(一个pkcs12或pem文件,可以通过shell通过几个命令轻松生成)或由像Thawte或Verisign这样的授权公司。 虽然我不知道这是否是您所面临的问题,但是很高兴查看。 (另外,我是一个新手,所以请不要拒绝我的答案,只是想提出可能的选择。)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |