【问题标题】:SOA cllient handshake errorSOA 客户端握手错误
【发布时间】:2012-08-10 12:27:13
【问题描述】:

我正在尝试编写我的第一个 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 文件并自动处理授权?

谢谢,

米奇

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

【问题讨论】:

    标签: java ssl soa


    【解决方案1】:

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

    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://”地址。

    【讨论】:

    • 彼特,感谢您的回复。我能够让我的程序正常工作,基本上是按照您的建议进行操作,但在运行时通过 System.setProperty 获取正确的值。
    • 很好,如何设置属性只是最方便的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多