android I / O错误:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

tamtoum1987

我正在尝试使用Spring从我们的服务器开发人员那里获取一些信息

我收到此错误I / O错误:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found

我搜索了很多,我尝试使用CustomSimpleClientHttpRequestFactory和自定义HostnameVerifier

所以我有这样的事情:

     protected void prepareConnection(HttpURLConnection connection,
        String httpMethod) throws IOException {

    connection.setFollowRedirects(true);

    HostnameVerifier v = new NullHostnameVerifier();
    ((HttpsURLConnection) connection).setDefaultHostnameVerifier(v);
      ((HttpsURLConnection) connection).setHostnameVerifier(v);



    super.prepareConnection(connection, httpMethod);
 }

 public class NullHostnameVerifier implements HostnameVerifier {
   public boolean verify(String hostname, SSLSession session) {
          return true;
       }
    }

我验证程序输入到此处:prepareConnection,但他从未输入NullHostnameVerifier的函数验证。

记录错误:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:409)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.Connection.connect(Connection.java:107)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:72)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:63)
06-08 17:01:53.149: E/AndroidRuntime(32118):    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:476)

任何人都知道问题出在哪里,为什么我仍然会收到此错误?

tamtoum1987

我解决了这样的问题:

           ClientHttpRequestFactory HttpComponentsClientHttpRequestFactory = new   

      org.springframework.http.client.HttpComponentsClientHttpRequestFactory(getNewHttpC
  lient()) ;
       restTemplate.setRequestFactory(HttpComponentsClientHttpRequestFactory);


public HttpClient getNewHttpClient() {
    try {
        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        trustStore.load(null, null);

        MySSLSocketFactory sf = new MySSLSocketFactory(trustStore);
        sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        registry.register(new Scheme("https", sf, 443));

        ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

        return new DefaultHttpClient(ccm, params);
    } catch (Exception e) {
        return new DefaultHttpClient();
    }
}

 import org.apache.http.conn.ssl.SSLSocketFactory;
public class MySSLSocketFactory extends SSLSocketFactory {
    SSLContext sslContext = SSLContext.getInstance("TLS");

    public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
        super(truststore);

        TrustManager tm = new X509TrustManager() {
            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            }

            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
            }

            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };

        sslContext.init(null, new TrustManager[] { tm }, null);
    }

    @Override
    public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
        return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
    }

    @Override
    public Socket createSocket() throws IOException {
        return sslContext.getSocketFactory().createSocket();
    }
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。Android 2.3

来自分类Dev

Android java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

来自分类Dev

Android N java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

来自分类Dev

java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

来自分类Dev

调试javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

来自分类Dev

CertPathValidatorException:找不到证书路径的信任锚-Retrofit Android

来自分类Dev

Unity3d Android构建中的“ CertPathValidatorException:找不到证书路径的信任锚”

来自分类Dev

Android JavaMail应用程序-CertPathValidatorException:找不到证书路径的信任锚

来自分类Dev

Apache HttpClient:java.security.cert.CertPathValidatorException

来自分类Dev

SSLHandshakeException找不到证书路径的信任锚Android HTTPS

来自分类Dev

SSLHandshakeException找不到证书路径的信任锚Android HTTPS

来自分类Dev

SSLHandshakeException找不到证书路径的信任锚Android HTTPS

来自分类Dev

java.security.cert.CertPathValidatorException:Web 服务调用时的证书链接错误

来自分类Dev

错误行为异常java.security.cert.CertificateParsingException

来自分类Dev

Android Volley错误:“未找到证书路径的信任锚”,仅在真实设备中,未在模拟器中

来自分类Dev

javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:证书不符合算法约束

来自分类Dev

SOAP UI不适用于https请求(java.security.cert.CertificateException:证书不符合算法约束)

来自分类Dev

javax.security.cert.X509Certificate和java.security.cert.X509Certificate之间的不兼容性

来自分类常见问题

如何修复“ java.security.cert.CertificateException:不存在使用者替代名称”错误?

来自分类Dev

java.security.cert.CertificateParsingException:java.io.IOException:未知的命名曲线:1.3.132.0.38

来自分类Dev

ule子-java.security.cert.CertificateException:不存在使用者替代名称

来自分类Dev

java.security.cert.CertificateException:没有主题备用名称;

来自分类Dev

撤销了逻辑开始方法(java.security.cert.X509CRL)

来自分类Dev

扩展 java.security.cert.X509Certificate 的正确方法是什么?

来自分类Dev

Android Studio错误找不到指定的路径

来自分类Dev

使用 AeroGear PushPlugin 和cordova android 平台未找到认证路径的信任锚错误

来自分类Dev

android java.security.NoSuchAlgorithmException:找不到KeyManagerFactory SunX509实现

来自分类Dev

自签名证书-找不到信任锚

来自分类Dev

如何使用OS X的“ security add-trusted-cert”命令指定证书的策略约束?(用于SSL Web套接字连接)

Related 相关文章

  1. 1

    java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。Android 2.3

  2. 2

    Android java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

  3. 3

    Android N java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

  4. 4

    java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

  5. 5

    调试javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚

  6. 6

    CertPathValidatorException:找不到证书路径的信任锚-Retrofit Android

  7. 7

    Unity3d Android构建中的“ CertPathValidatorException:找不到证书路径的信任锚”

  8. 8

    Android JavaMail应用程序-CertPathValidatorException:找不到证书路径的信任锚

  9. 9

    Apache HttpClient:java.security.cert.CertPathValidatorException

  10. 10

    SSLHandshakeException找不到证书路径的信任锚Android HTTPS

  11. 11

    SSLHandshakeException找不到证书路径的信任锚Android HTTPS

  12. 12

    SSLHandshakeException找不到证书路径的信任锚Android HTTPS

  13. 13

    java.security.cert.CertPathValidatorException:Web 服务调用时的证书链接错误

  14. 14

    错误行为异常java.security.cert.CertificateParsingException

  15. 15

    Android Volley错误:“未找到证书路径的信任锚”,仅在真实设备中,未在模拟器中

  16. 16

    javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:证书不符合算法约束

  17. 17

    SOAP UI不适用于https请求(java.security.cert.CertificateException:证书不符合算法约束)

  18. 18

    javax.security.cert.X509Certificate和java.security.cert.X509Certificate之间的不兼容性

  19. 19

    如何修复“ java.security.cert.CertificateException:不存在使用者替代名称”错误?

  20. 20

    java.security.cert.CertificateParsingException:java.io.IOException:未知的命名曲线:1.3.132.0.38

  21. 21

    ule子-java.security.cert.CertificateException:不存在使用者替代名称

  22. 22

    java.security.cert.CertificateException:没有主题备用名称;

  23. 23

    撤销了逻辑开始方法(java.security.cert.X509CRL)

  24. 24

    扩展 java.security.cert.X509Certificate 的正确方法是什么?

  25. 25

    Android Studio错误找不到指定的路径

  26. 26

    使用 AeroGear PushPlugin 和cordova android 平台未找到认证路径的信任锚错误

  27. 27

    android java.security.NoSuchAlgorithmException:找不到KeyManagerFactory SunX509实现

  28. 28

    自签名证书-找不到信任锚

  29. 29

    如何使用OS X的“ security add-trusted-cert”命令指定证书的策略约束?(用于SSL Web套接字连接)

热门标签

归档