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;

    即可;

  • 相关阅读:
    基于OWin的Web服务器Katana发布版本3
    如何在.NET上处理二维码
    .NET开源OpenID和OAuth解决方案Thinktecture IdentityServer
    ASP.NET Identity V2
    Azure Redis Cache
    CentOS 7 安装RabbitMQ 3.3
    ASP.Net MVC 5 in Xamarin Studio 5.2
    Centos 7.0 安装Mono 3.4 和 Jexus 5.6
    CentOS下GPT分区(转)
    CentOS下使用LVM进行分区(转)
  • 原文地址:https://www.cnblogs.com/silentdoer/p/14179598.html
Copyright © 2011-2022 走看看