zoukankan      html  css  js  c++  java
  • SpringBoot用restTemplate调用https接口报 sun.security.validator.ValidatorException: PKIX path 。。。

    修改自:http://blog.joylau.cn/2020/10/19/SpringBoot-RestTemplate-SSL/

    解决办法是写一个@Configuration配置类,里面添加代码:

    import org.apache.http.conn.ssl.NoopHostnameVerifier;
        import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
        import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
        import org.apache.http.impl.client.CloseableHttpClient;
        import org.apache.http.impl.client.HttpClients;
        import org.apache.http.ssl.SSLContextBuilder;
    
    
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplateBuilder.build();
        }
    
        /**
         * HTTPS RestTemplate
         */
        @Bean
        public RestTemplate httpsRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
            SSLContextBuilder builder = new SSLContextBuilder();
            builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
            SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(), NoopHostnameVerifier.INSTANCE);
    
            CloseableHttpClient httpClient
                    = HttpClients.custom()
                    .setSSLHostnameVerifier(new NoopHostnameVerifier())
                    .setSSLSocketFactory(sslConnectionSocketFactory)
                    .build();
            HttpComponentsClientHttpRequestFactory requestFactory
                    = new HttpComponentsClientHttpRequestFactory();
            requestFactory.setHttpClient(httpClient);
            requestFactory.setConnectTimeout((int)Duration.ofSeconds(5).toMillis());
            return new RestTemplate(requestFactory);
        }

    然后用的地方由原来的:

    @Resource
    private RestTemplate restTemplate;

    改成:

    @Resource
    private RestTemplate httpsRestTemplate;

    即可;

  • 相关阅读:
    Netty源码分析——准备
    Netty入门
    Netty源码分析——EventLoopGroup建立
    三层架构搭建(asp.net mvc + ef)
    Springboot 1.5.x 集成基于Centos7的RabbitMQ集群安装及配置
    Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置
    Springboot 2.0.x 引入链路跟踪Sleuth及Zipkin
    JAVA编码 —— 字符串关键字内容替换
    使用java发送QQ邮件的总结
    Docker原理探究
  • 原文地址:https://www.cnblogs.com/silentdoer/p/14179598.html
Copyright © 2011-2022 走看看