GAE上的Web服务的双向SSL(java)

Cug*_*uga 15 java ssl google-app-engine web-services pki

我们需要在Google App Engine上实施双向SSL,我们使用JAX-WS向需要双向SSL身份验证的服务器发送Web服务请求.

我们如何为传出的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);
  }
}
Run Code Online (Sandbox Code Playgroud)

以上代码的一个例子:

ListenerSoap soap = new Listener().getListenerSoap();
soap.ping();
Run Code Online (Sandbox Code Playgroud)

我想我们可以将DataStore中所需的密钥库或任何证书存储为二进制对象(尽管如何上传它们对我来说仍然是模糊的).

我们如何设置此Web服务使用双向SSL进行身份验证所需的必要值?

谢谢你的帮助

更新:

通过研究我已经看到这是如何在传统服务器上进行的(一个具有文件系统访问权限):

ListenerSoap soap = new Listener().getListenerSoap();
((BindingProvider) soap).getRequestContext().put("javax.net.ssl.keyStore", "client_cert.p12"
Run Code Online (Sandbox Code Playgroud)

但是,在这种方法中,client_cert.p12预计会在文件系统上.

此外,SSLSocketFactory,SSLContext,KeyManager,和KeyManagerFactory所有不允许在GAE.

更新:

截至GAE SDK 1.7.7版.这应该是可能的:

Similarly, Java developers can now use the javax.net.ssl package to make outbound SSL connections.
Run Code Online (Sandbox Code Playgroud)

GAE 1.7.7 SDK发行说明

oma*_*tin 0

据我所知,双向 SSL 与 Java EE 代码没有任何联系:双向 SSL 是一种传输层安全性:当您的客户端应用程序尝试与服务器创建安全的 HTTP 连接 (HTTPS) 时,服务器将索取证书并将批准或不批准该证书。如果客户端证书获得批准,则各方之间将建立安全连接,并且允许他们通过此隧道交换一些消息。但这个过程是在传输层完成的。您的代码(在应用程序层)永远不会被告知此过程。为了建立双向 SSL,需要在应用程序服务器上完成 SSL 端口设置。

  • 这绝对不是真的。完全可以通过应用程序代码建立双向 SSL 连接,例如设置 `systemProps.put("javax.net.ssl.keyStore", keyStorePath);`。问题是 GAE 将“java.net.ssl*”包列入黑名单,因此在撰写本文时不可能在 GAE 上执行此操作。 (4认同)