0

我正在尝试编写我的第一个 SOA 客户端,但在使用“2-way SSL”部分时遇到了困难。

我们的服务器在 Weblogic 下运行,但我的应用程序是一个简单的 Java 控制台应用程序——它不在任何容器中运行。

服务器使用并需要证书。我们使用来自 Godaddy.com 的可信证书,我们也有内部证书。

我们的 sysadm 给了我服务器证书,我使用 keytool 将其添加到我的 JRE“cacerts”文件中。有人告诉我应该使用 Spring-WS,因为它会让我的生活更轻松,但是我很难让它工作,因为 Chap. 7 次提及,我不确定我应该使用哪一个。他还为我个人创建了一个 .jks 文件,用于我的授权。

对于这个简单的应用程序,我宁愿完全不使用 Spring(SOA 方法是一种简单的“添加注释”方法,没有实质性的返回数据。

我正在使用 MyEclipse 9.1,并且也在尝试使用 Maven4MyEclipse。

我的问题是:

鉴于我的身份验证证书将通过 JRE cacerts 文件提供(如果我理解正确的话),我需要做的主要事情是能够在 SSL 握手期间展示我的 .jks 文件。

我可以在没有 Spring 的情况下做到这一点吗?如果是这样,有没有办法可以简单地使用我的 .jks 文件设置系统属性,以便自动处理它?还是我真的需要使用 Spring 来处理授权部分?

如果是后者,我怎么知道要使用哪种Spring 安全拦截器类型?XwsSecurityInterceptor 还是 Wss4jSecurityInterceptor?

或者我刚刚想到另一个问题。.jks 文件是否也可以添加到 cacerts 文件中并自动处理授权?

谢谢,

米奇

ps 信不信由你,我的组织中显然没有现有的 Java 客户端示例可以简单地查看模板。

4

1 回答 1

2

对于双向身份验证,我在启动客户端应用程序时一直使用以下内容:

java -Djavax.net.ssl.keyStore=myClientKeystore -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.trustStore=myTrustStore -Djavax.net.ssl.trustStorePassword=123456 -Djavax.net.debug=ssl

也就是说,我的客户端私有证书在“myClientKeystore”中,然后服务器公共证书在“myTrustStore”中。javax.net.debug=ssl 将使您的生活更轻松,因为如果您无法使 SSL 会话正常工作,它会输出一些不错的调试信息。

这是 SSL 部分。然后我认为您将 SOA 与 Web 服务和 SOAP 混为一谈。SOA通常是指面向服务的架构,层次非常高。我认为您在谈论 SOAP 实现。

如果 Web 服务不仅仅是微不足道的,是的,一个框架将使您的生活更轻松。除了 Spring-ws(我也喜欢)之外,您可以在 google 上搜索 CXF 和 Axis2,您会发现大量如何编写 SOAP 客户端的示例。但可以肯定的是,如果您能够手动创建 SOAP 信封(使用 SoapUI 生成测试信封是一个好的开始......),您可以编写相当原始的 Web 服务调用。

然后,看一下:this page,它有一个示例,说明如何在没有任何框架的情况下通过 HTTP 进行 SOAP 调用。当然,由于您使用的是 SSL,因此您应该引用“https://”地址。

于 2012-08-17T19:44:04.510 回答