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;

    即可;

  • 相关阅读:
    判断两个链表是否相交
    【转】TCP连接突然断开的处理方法
    【转】TCP/IP协议——ARP详解
    HTTP协议COOKIE和SESSION有什么区别
    【转】K-Means聚类算法原理及实现
    【转】机器学习实战之K-Means算法
    unity3d 调用Start 注意
    u3d 加载PNG做 UI图片
    Opengl的gl_NormalMatrix
    OpenGL 遮挡查询
  • 原文地址:https://www.cnblogs.com/silentdoer/p/14179598.html
Copyright © 2011-2022 走看看