设置Spring 4 RestTemplate以使用SSL(JKS)

时间:2014-12-04 14:46:04

标签: spring ssl resttemplate

所有,我正在尝试设置Spring的RestTemplate以允许对合作伙伴的Web服务进行SSL调用。我的设置是:

  • Java 1.7
  • Spring version 4.1
  • Httpclient version 4.3
  • Tomcat 7.0.54

我正在尝试利用3.x servlet-api.jar(自带Tomcat 7)和Spring 4的新功能,它允许我的Spring配置完全注释/代码驱动,而不是拥有多个XML配置文件(截至目前,我的web.xml文件已完全为空)。到目前为止,我有:

我的基本配置类,非常简单

package com.config;

[imports]

@Configuration
@ComponentScan("com.application")
@EnableWebMvc
public class Config {

}

我的网络初始化课程。我正在提取我的证书并将它们读入Resource对象,但到目前为止我还没有对它们做任何事情。我也设置好了,这样我就可以在我的应用程序中进行休息调用(而不是这与我的问题相关)。

package com.config;

[imports]

@Configuration
public class WebApplication implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(com.config.Config.class);

        ctx.setServletContext(servletContext);

        Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);

        Resource trustStore = ctx.getResource("file:" + System.getProperty("javax.net.ssl.trustStore"));

        Resource keyStore = ctx.getResource("file:" + System.getProperty("javax.net.ssl.keyStore"));

        String trustStorePassword = System.getProperty("javax.net.ssl.trustStorePassword")
        String keyStorePassword = System.getProperty("javax.net.ssl.keyStorePassword")
    }
}

从Spring 3到Spring 4,似乎有一个不错的数量,因此有关如何使用SSL设置RestTemplate的现有示例不再有效。最重要的是,我一直在梳理网络上的一个例子,说明如何使用Java / annotations而不是xml文件,但到目前为止还没有发现任何东西。我做了几次不同的尝试,自己配置一个RestTemplate对象,没有任何运气。有没有人有一个很好的例子或链接到如何尝试实现这个的例子?

1 个答案:

答案 0 :(得分:0)

所以看起来我找到了一个很好的例子让我95%的方式(其他5%只是我的配置,使其在我们的系统中工作)。看看这个开发人员如何为Spring的RestTemplate实现FactoryBean,并且不要忘记用你的sslContext / HttpClient创建一个ClientHttpRequestFactory并用它创建你的RestTemplate。我为没有发布我的代码而道歉,但我们是在一个封闭的网络上开发的。

https://hjpetstore.googlecode.com/svn-history/r40/trunk/hjpetstore2.0/src/main/java/org/pprun/common/web/rest/client/SslRestTemplateFactoryBean.java