首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于GAE上Web服务的双向SSL(Java)

用于GAE上Web服务的双向SSL(Java)
EN

Stack Overflow用户
提问于 2018-03-20 07:26:27
回答 2查看 0关注 0票数 0

我们需要在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预计会在文件系统上。

此外,SSLSocketFactorySSLContextKeyManager,和KeyManagerFactory所有不允许在GAE。

截至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发行说明

EN

Stack Overflow用户

发布于 2018-03-20 15:46:01

根据我对SSL授权的限制知识,看起来您可能在这里错过了一些至关重要的事情; 证书。双向SSL需要客户端和服务器证书位于密钥库中,该密钥库可以是自签名证书(pkcs12或pem文件,您可以通过shell通过几条命令轻松生成该证书),也可以是由像Thawte或Verisign这样的授权公司。虽然我不确定这是否是您所面临的问题,但是很好的检查它。(另外,我是一个新手,所以请不要低估我的答案,只是想提出可能的选择。)

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档