java – 使用restTemplate时需要忽略证书

前端之家收集整理的这篇文章主要介绍了java – 使用restTemplate时需要忽略证书前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在向以下地址发送请求.证书无效,我想忽略它.我根据我在 1,2的研究写了以下代码,但是我无法完成.我正在使用Java 1.7,
https://api.stubhubsandBox.com/search/catalog/events/v3

private static final TrustManager[] UNQUESTIONING_TRUST_MANAGER = new TrustManager[]{
    new X509TrustManager() {
        public java.security.cert.X509Certificate[] getAcceptedIssuers(){
            return null;
        }
        public void checkClientTrusted( X509Certificate[] certs,String authType ){}
        public void checkServerTrusted( X509Certificate[] certs,String authType ){}
        public void checkClientTrusted(
                java.security.cert.X509Certificate[] arg0,String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }
        public void checkServerTrusted(
                java.security.cert.X509Certificate[] arg0,String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }
    }
};

public static void main(String[] args) {
    TrustStrategy acceptingTrustStrategy = 

    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);

    RestTemplate restTemplate = new RestTemplate(requestFactory);
    String url = "https://api.stubhubsandBox.com/search/catalog/events/v3";
    RestTemplate rest = new RestTemplate();
    Map<String,String> mvm = new HashMap<String,String>();
    mvm.put("Authorization","Bearer TOKEEEEEEEN");
    Object object = rest.postForObject(url,null,Object.class,mvm);
    System.err.println("done");


}

解决方法

您可能已经注意到,Spring的RestTemplate将所有与HTTP(S)相关的内容委托给ClientHttpRequestFactory的底层实现.由于您使用基于HttpClient的实现,以下是有关如何为内部HttpClient实现此功能的几个有用的SO链接

> Ignoring SSL certificate in Apache HttpClient 4.3
> How to ignore SSL certificate errors in Apache HttpClient 4.0

显然,自4.4版以来,可以这样做:

CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
原文链接:https://www.f2er.com/java/123396.html

猜你在找的Java相关文章