提问人:Khaski 提问时间:5/16/2023 最后编辑:Khaski 更新时间:5/17/2023 访问量:217
关闭 ssl 证书 resttemplate spring 的验证
Turn off validation of ssl certificate resttemplate spring
问:
当我需要关闭 ssl 的验证时,我有问题 证书 rest模板。我找到了这个解决方案。
@Bean
public RestTemplate restTemplate() throws KeyStoreException,
NoSuchAlgorithmException, KeyManagementException {
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain,
String authType) -> true;
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
.loadTrustMaterial(null, acceptingTrustStrategy)
.build();
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(csf)
.build();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
return new RestTemplate(requestFactory);
但是在方法setHttpClient中,我无法注入我的httpClient,因为所需的方法setHttpClient类型是HttpClient.Everywhere,我发现只有这种方法可以禁用SSL证书的验证。我该如何解决这个问题?
答:
1赞
Zack Macomber
5/17/2023
#1
您可以创建一个像这样的“devRestTemplate”bean,它将基于您的非验证:RestTemplate
@Bean(name = "restTemplate")
@Profile("dev")
public RestTemplate devRestTemplate() {
...
}
而您的初级生产豆...RestTemplate
@Bean(name = "restTemplate")
@Primary
public RestTemplate restTemplate() {
...
}
然后,当您在计算机上运行应用程序时,只需将活动配置文件指定为“dev”,并且将使用非验证 Bean。
有关使用 Spring Profiles 的更多信息,请参阅 https://www.baeldung.com/spring-profiles。
评论
0赞
Jankiel Goldman
6/7/2023
如何修复setHttpClient无法接收CloseableHttpClient?Spring 3.1 无法处理 apache http 4.x,这就是问题所在。
评论