Java 如何使自签名证书代码只执行一次? 设置:

Java 如何使自签名证书代码只执行一次? 设置:,java,ssl,https,ssl-certificate,Java,Ssl,Https,Ssl Certificate,我正在我的一个项目中使用SpringMVC。我必须访问一个我必须使用自签名证书的URL。我在我的服务中使用了以下代码,一切正常 TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; }

我正在我的一个项目中使用SpringMVC。我必须访问一个我必须使用自签名证书的URL。我在我的
服务中使用了以下代码
,一切正常

TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
    @Override
    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return null;
    }

    @Override
    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
    }

    @Override
    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
    }
}};

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (GeneralSecurityException e) {
    LOGGER.error(e);
}
问题: 由于此代码在我的
服务中
,因此每次通过此
服务
发出新请求时都会执行此代码。有没有办法让这个代码只执行一次,而不是每次请求都执行一次?一些带有实际代码的示例将非常受欢迎


如果需要更多解释,请发表评论。

例如,您可以将此代码放入单独SpringBean的init方法中,它将在应用程序启动期间执行:

@Component
public class TrustManagerConfigurer {
    @PostConstruct
    public void installTrustManager() { ... }
}
或者,您可以将其放入中以实现相同的效果

另请参见:


例如,您可以将此代码放入单独Springbean的init方法中,它将在应用程序启动时执行:

@Component
public class TrustManagerConfigurer {
    @PostConstruct
    public void installTrustManager() { ... }
}
或者,您可以将其放入中以实现相同的效果

另请参见:


只需将ServletContext保存到某个地方,而不是每次都重新创建它


您知道这段代码根本不安全吗?解决这个问题的正确方法是将证书导入您的信任库?

只需将ServletContext保存到某个地方,而不是每次都重新创建它


您知道这段代码根本不安全吗?这个问题的正确解决方案是将该证书导入您的信任库?

请求此问题的更大上下文。正如我在问题中所说,我使用的是(Java)SpringMVC。因此,我有一个UI,它对调用
服务的
控制器进行Ajax调用。而
服务
包含所有这些代码。这有帮助吗?信任所有证书是不明智的,因为任何拥有正确(非常广泛可用)工具的人都可以创建一个证书。请求了解此问题的更大背景。正如我在问题中所说,我使用的是(Java)SpringMVC。因此,我有一个UI,它对调用
服务的
控制器进行Ajax调用。而
服务
包含所有这些代码。它有帮助吗?信任所有证书是不明智的,因为任何拥有正确(非常广泛可用)工具的人都可以创建证书。