LoginSignup
4
4

More than 3 years have passed since last update.

自己署名証明書を受け付けるRestTemplate

Last updated at Posted at 2019-07-04

概要

Springフレームワークで提供されているRestTemplateで、自己署名証明書(オレオレ証明書)を許容する。

環境

  • Java 8
  • SpringBoot 2.1.3.RELEASE
  • Spring 5.1.5.RELEASE
  • Apache HttpClient 4.5.7

Bean定義

RestTemplateのBean定義
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;

@Configuration
public class RestTemplateBeanConfig {

    @Bean
    RestTemplate restTemplateIgnoreSelfSignedCertification() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
        SSLContext sslContext = SSLContexts.custom()
            .loadTrustMaterial(new TrustSelfSignedStrategy())
            .build();
        HttpClient httpClient = HttpClients.custom()
            .setSSLContext(sslContext)
            .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
            .build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(httpClient);
        return new RestTemplateBuilder()
            .messageConverters(new MappingJackson2HttpMessageConverter())
            .requestFactory(() -> requestFactory)
            .build();
    }

}

参考

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4