使用Spring开发期间需要信任所有证书

时间:2011-07-22 11:53:19

标签: java spring ssl configuration

我读到这个非常有用的article关于以编程方式禁用所有https证书。我只在开发中需要这样的方法。我正在使用Spring。那么有没有人有关于我如何才能在Spring上下文文件中执行相同操作的想法,而不是在Java代码中? 我的意思是代码的这一特定部分:

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

实际上,我可以模拟第一行: 类似的东西:

<bean id="sslContext"
        class="javax.net.ssl.SSLContext"
      factory-method="getInstance">
      <constructor-arg type="java.lang.String" value="SSL" />
    </bean>

另外,我可以创建这个trustAllCerts bean。 但是......我很困惑..可以在spring上下文初始化中调用bean的某个方法吗?我的意思是如何在spring上下文文件中调用sc.init和sc.getSocketFactory?这是不可能的吗?

1 个答案:

答案 0 :(得分:2)

是 - 您可以使用init-method属性。看看Initialization callbacks。但这个界面还不够。我建议只需放置此代码

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

在您的自定义类中,它将知道您处于开发模式或wchich将具有此类init方法。 BTW调用getSocketFactory很简单 - 这只是获得socketFactory属性。