2012-02-28 37 views
1

我有一个关于TSL/SSL的问题。我正在使用Spring HTTP-Invoker编写客户端 - 服务器应用程序。客户端是通过webstart分发的“经典”桌面应用程序。服务器将在Tomcat/JBoss上运行。我已经用测试服务测试过这个调用,它的功能就像一个魅力一样,但是现在我正尝试使用SSL来加密频道。我会后我的客户端代码澄清:Spring HTTP调用者的TSL/SSL配置

<bean id="checkFuntionalityService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> 
    <property name="serviceUrl" value="https://localhost:8443/test-server/remoting/checkFuntionalityService" /> 
    <property name="serviceInterface" value="at.test.common.remote.CheckFuntionalityService" /> 
    <property name="httpInvokerRequestExecutor"> 
     <bean class="org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor"> 
      <property name="readTimeout" value="5000" /> 
      <property name="connectTimeout" value="5000" /> 
     </bean> 
    </property> 
</bean> 

我试图与一个自签名的证书,我把我的cacerts的商店和它的作品,但我仍然有一些问题:

是有办法在客户端使用不同的keystore/truststore(例如classpath:config/test.jks)?我的计划是将我的证书放入一个新的密钥库中,我将其放入客户端项目中。这是可能的,如果是这样的话:我如何在客户端使用这个商店?我知道一个更好的方法是来自可信CA的证书,但这不是一个选项atm。此外,我不能把关键在每个用户cacerts商店。对我有什么提示?

我也对任何类型的建议公开。我应该坚持使用HTTP-Invoker吗?我也可以使用Spring RMI-Invoker,我明白,唯一的区别是HTTP-Invoker使用HTTP-Post来传输二进制内容,而这更不可能被防火墙阻止,对吗?但是如果防火墙配置对我来说不是问题呢?那么我应该使用RMI还是坚持使用HTTP-Invoker?

回答

0

(。在一个问题回答的编辑转换为一个社区维基答案见What is the appropriate action when the answer to a question is added to the question itself?

的OP写道:

问题已经解决了!我有点与Truststore混合使用密钥存储。因此,如果您发现此问题并寻找答案,请查看:Trust Store vs Key Store - creating with keytool。简而言之:您必须创建一个证书,将其放入服务器的密钥库中,并放入客户端的信任库中。那么,基本上keystore和truststore之间并没有真正的区别,唯一的区别是你使用不同的System-properties来在你的程序中定义它们。 (例如,信任库的javax.net.ssl.trustStore)。那就是我搞砸了!

我仍然对是否使用Spring HTTP Invoker的原因感兴趣。