gpt4 book ai didi

java - GAE 上用于 Web 服务的 2 向 SSL (java)

转载 作者:太空狗 更新时间:2023-10-29 22:57:56 24 4
gpt4 key购买 nike

我们需要在 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);
}
}

以上代码的使用示例:

ListenerSoap soap = new Listener().getListenerSoap();
soap.ping();

我认为我们可以将 keystore 或 DataStore 中所需的任何证书存储为二进制对象(尽管如何上传它们对我来说仍然有点模糊)。

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

感谢您的帮助

更新:

通过研究,我发现这是如何在传统服务器(具有文件系统访问权限的服务器)上完成的:

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

但是,在这种方法中,client_cert.p12 应该在文件系统上。

此外,SSLSocketFactorySSLContextKeyManagerKeyManagerFactory 都不允许在 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 Release Notes

最佳答案

根据我对 SSL 授权的有限了解,您似乎在这里遗漏了一些至关重要的东西;证书。双向 SSL 要求客户端和服务器证书位于您的 keystore 中,它可以是自签名证书(pkcs12 或 pem 文件,您可以通过 shell 使用一些命令轻松生成)或由Thawte 或 Verisign 等授权公司。虽然我不确定这是否是您面临的问题,但最好检查一下。(此外,我是新手,所以请不要对我的回答投反对票,只是想提出可能的选择。)

关于java - GAE 上用于 Web 服务的 2 向 SSL (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10934576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com