GVKun编程网logo

android – Glide – javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorExcept

21

在本文中,我们将给您介绍关于android–Glide–javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidator

在本文中,我们将给您介绍关于android – Glide – javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorExcept的详细内容,此外,我们还将为您提供关于Android 11的javax.net.ssl.SSLHandshakeException、Android 2.3.x javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚、Android java.security.cert.CertPathValidatorException:找不到证书路径的信任锚、Android KSOAP2 SSL java.security.cert.CertPathValidatorException的知识。

本文目录一览:

android – Glide – javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorExcept

android – Glide – javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorExcept

我将服务器从HTTP迁移到HTTPS我已经使用自签名证书来发送带有HttpUrlConnection的网络请求并且它工作但是对于图像加载它不起作用,因为我使用Glide进行图像加载.

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.while loading images from https URL through glide library

Glide.with(mContext).load(currentItem.getimage_path().replace(" ", "%20"))
     .listener(new RequestListener<String, GlideDrawable>() {
        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            genericViewHolder.imageView_1.setimageResource(R.drawable.image_thumbnail);
            genericViewHolder.progressBar.setVisibility(View.GONE);
            return false;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            genericViewHolder.progressBar.setVisibility(View.GONE);
            return false;
        }
    }).into(genericViewHolder.imageView_1);

我尝试使用this链接并使用GlideModule但它似乎不起作用.请帮忙.

解决方法:

问题是关于证书请按照此链接-https://stackoverflow.com/a/39032433/4741746

这将绕过证书并允许您进入系统

看到这个链接也是-https://futurestud.io/tutorials/glide-module-example-accepting-self-signed-https-certificates

创建您的自定义GlideModule类,OkHttpUrlLoader类并附上Glide,如上所述

你必须把

<Meta-data
        android:name="io.futurestud.tutorials.glide.glidemodule.CustomImageSizeGlideModule"
        android:value="GlideModule" />

AndroidMainifiest文件https://github.com/fs-opensource/android-tutorials-glide/blob/master/app/src/main/AndroidManifest.xml的内部应用程序标记

Android 11的javax.net.ssl.SSLHandshakeException

Android 11的javax.net.ssl.SSLHandshakeException

如何解决Android 11的javax.net.ssl.SSLHandshakeException?

尝试在Android 11上使用HTTPS连接到我的服务器时,我的应用程序抛出javax.net.ssl.SSLHandshakeException错误。

可能是什么原因造成的?我正在通过CloudFlare使用完全SSL。 Android 11是否需要完整的SSL(严格)?

2020-09-12 19:21:37.131 20726-20857/? I/APP: I 09/12/2020 19:21:37:130 b7ef51e0 Net| POST request (Pull): sync.mydomain.com/rc/v1/app/login
2020-09-12 19:21:37.146 206-212/? E/android.system.suspend@1.0-service: Error opening kernel wakelock stats for: wakeup34: Permission denied
2020-09-12 19:21:37.149 206-212/? E/android.system.suspend@1.0-service: Error opening kernel wakelock stats for: wakeup35: Permission denied
2020-09-12 19:21:37.143 206-206/? W/Binder:206_2: type=1400 audit(0.0:3377): avc: denied { read } for name="wakeup34" dev="sysfs" ino=18474 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
2020-09-12 19:21:37.147 206-206/? W/Binder:206_2: type=1400 audit(0.0:3378): avc: denied { read } for name="wakeup35" dev="sysfs" ino=18534 scontext=u:r:system_suspend:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0
2020-09-12 19:21:37.192 20726-20857/? I/APP: I 09/12/2020 19:21:37:192 b7ef51e0 SSLImplJava| SSL connect to sync.mydomain.com:443
2020-09-12 19:21:37.192 20726-20857/? I/APP: I 09/12/2020 19:21:37:192 b7ef51e0 SSLImplJava| Creating secure SSL factory
2020-09-12 19:21:37.193 20726-20857/? I/APP: I 09/12/2020 19:21:37:193 b7ef51e0 SSLImplJava| Creating TrustManager for system certificates
2020-09-12 19:21:37.193 20726-20857/? I/APP: I 09/12/2020 19:21:37:193 b7ef51e0 SSLImplJava| Loading all SSL certificates from config
2020-09-12 19:21:37.193 20726-20857/? I/APP: I 09/12/2020 19:21:37:193 b7ef51e0 SSLImplJava| SSL certificates loaded: 0
2020-09-12 19:21:37.193 20726-20857/? I/APP: I 09/12/2020 19:21:37:193 b7ef51e0 SSLImplJava| Creating TrustManager for custom certificates
2020-09-12 19:21:37.193 20726-20857/? I/APP: I 09/12/2020 19:21:37:193 b7ef51e0 SSLImplJava| clientSSLCertificate is
2020-09-12 19:21:37.195 20726-20857/? I/APP: I 09/12/2020 19:21:37:195 b7ef51e0 SSLImplJava| Secure SSL factory initialization completed
2020-09-12 19:21:37.196 20726-20857/? I/APP: E 09/12/2020 19:21:37:196 b7ef51e0 SSLImplJava| Call of "connect" Failed: SSLHandshakeException: Attempt to invoke virtual method ''void java.io.OutputStream.write(byte[],int,int)'' on a null object reference
2020-09-12 19:21:37.197 20726-20857/? W/System.err: javax.net.ssl.SSLHandshakeException: Attempt to invoke virtual method ''void java.io.OutputStream.write(byte[],int)'' on a null object reference
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.SSLUtils.toSSLHandshakeException(SSLUtils.java:362)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.doHandshake(ConscryptEnginesocket.java:276)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.startHandshake(ConscryptEnginesocket.java:217)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.waitForHandshake(ConscryptEnginesocket.java:563)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.getoutputStream(ConscryptEnginesocket.java:298)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.rhomobile.rhodes.socket.SSLImpl.connect(SSLImpl.java:639)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ''void java.io.OutputStream.write(byte[],int)'' on a null object reference
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket$SSLOutputStream.writetoSocket(ConscryptEnginesocket.java:715)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket$SSLOutputStream.writeInternal(ConscryptEnginesocket.java:689)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket$SSLOutputStream.access$200(ConscryptEnginesocket.java:616)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: at com.android.org.conscrypt.ConscryptEnginesocket.doHandshake(ConscryptEnginesocket.java:245)
2020-09-12 19:21:37.197 20726-20857/? W/System.err: ... 4 more
2020-09-12 19:21:37.197 20726-20857/? I/APP: E 09/12/2020 19:21:37:197 b7ef51e0 Net| Operation finished with error 35: SSL connect error
2020-09-12 19:21:37.197 20726-20857/? I/APP: E 09/12/2020 19:21:37:197 b7ef51e0 Net| CURLNetRequest: METHOD = [POST] URL = [https://sync.mydomain.com/rc/v1/app/login] BODY = [{"login":"","password":"","remember_me":1}]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

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

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

我只在(可能是一些)2.3.x设备上收到此错误.它适用于运行 Android版本的任何其他设备.

这是我的HTTPRequestController:

public class HttpRequestController {

private final static String TAG = "HttpRequestController";

private static HttpRequestController instance;

public enum Method {
    PUT,POST,DELETE,GET
}

private HttpRequestController() {

}

public static HttpRequestController getInstance() {
    if (instance == null)
        instance = new HttpRequestController();

    return instance;
}

public String doRequest(String url,HashMap<Object,Object> data,Method method,String token) throws Exception {

    InputStream certificateInputStream = null;
    if (MyApplication.PRODUCTION) {
        certificateInputStream = MyApplication.context
                .getResources().openRawResource(R.raw.production_cert);
        LogUtils.log("using production SSL certificate");
    } else {
        certificateInputStream = MyApplication.context
                .getResources().openRawResource(R.raw.staging_cert);
        LogUtils.log("using staging SSL certificate");
    }

    KeyStore trustStore = KeyStore.getInstance("BKS");
    try{
    trustStore.load(certificateInputStream,"re3d6Exe5HBsdskad8efj8CxZwv".tochararray());
    } finally {
        certificateInputStream.close();
    }


    TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
    tmf.init(trustStore);
    LogUtils.log("SSL: did init TrustManagerFactory with trust keyStore");
    SSLContext context = SSLContext.getInstance("TLS");
    context.init(null,tmf.getTrustManagers(),null);
    LogUtils.log("SSL: did init context with trust keyStore");  


    URL request = new URL(url);
    HttpsURLConnection urlConnection = (HttpsURLConnection) request
            .openConnection();

    LogUtils.log("SSL: did open HttpsURLConnection");   

    urlConnection.setHostnameVerifier(new StrictHostnameVerifier());
    urlConnection.setSSLSocketFactory(context.getSocketFactory());
    urlConnection.setConnectTimeout(15000);
    LogUtils.log("SSL: did set Factory and Timeout.");

    if (method != Method.GET){
        urlConnection.setDoOutput(true);
    }
        urlConnection.setDoInput(true);
        urlConnection.setRequestProperty("Content-Type","application/json");
        urlConnection.setRequestProperty("Accept","application/json");

    LogUtils.log("SSL: urlConnection did set request properties.");

    if (token != null) {
        urlConnection.setRequestProperty("Authorization","Token " + token);
    }
        urlConnection.setRequestMethod(method.toString());
        urlConnection.connect();

        LogUtils.log("SSL: urlConnection did connect.");

    if (method != Method.GET) {
        ObjectMapper mapper = new ObjectMapper();
        String jsonValue = mapper.writeValueAsstring(data);
        OutputStream os = urlConnection.getoutputStream();
        os.write(jsonValue.getBytes());
        os.flush();
        LogUtils.log(TAG,"Params: " + jsonValue);
    }

    LogUtils.log(TAG,method.toString() + ": " + url);

    InputStream in = null;
    if (urlConnection.getResponseCode() == 200) {
        in = urlConnection.getInputStream();
    } else {
        in = urlConnection.getErrorStream();
    }
    String response = convertStreamToString(in);

    LogUtils.log(TAG,"Got response : " + url);
    LogUtils.log(TAG,"Response : " + response);

    return response;
}

public String convertStreamToString(InputStream inputStream) {
    BufferedReader buffReader = new BufferedReader(new InputStreamReader(
            inputStream));
    StringBuilder stringBuilder = new StringBuilder();

    String line = null;
    try {
        while ((line = buffReader.readLine()) != null) {
            stringBuilder.append(line + "\n");
        }
    } catch (IOException e) {
        e.printstacktrace();
    } finally {
        try {
            inputStream.close();
        } catch (IOException e) {
            e.printstacktrace();
        }
    }
    return stringBuilder.toString();
}

public HttpClient retrieveHttpClient() {
    return new MyHttpClient(MyApplication.context);
}

}

当我运行命令时:

openssl s_client -debug -connect www.mysitedomain.com:443

我收到了回复:

--
some key stuff 
--
Certificate chain
 0 s:/OU=Domain Control Validated/CN=www.mydomainname.com
   i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - G2
 1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
 2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
 some more certificate stuff
-----END CERTIFICATE-----

ubject=/OU=Domain Control Validated/CN=www.mydomainname.com
issuer=/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Domain Validation CA - G2
---
No client certificate CA names sent
---
SSL handshake has read 4091 bytes and written 328 bytes
---
New,TLSv1/SSLv3,Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 57C379C59483809A7FE1BF8E235C5BFA7789E62AAEBCA9BC14B5273F5D1304E7
    Session-ID-ctx: 
    Master-Key: 6FCD498D1294415A42B57420F0C05AB903EF8E56CB6F1530390F73AF5E4CBC22B359D5CDA09811E075A5C598002C380D
    Key-Arg   : None
    Start Time: 1390473282
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

所以它返回没问题…但它仍然给我测试的2.3.x设备的这个错误.

在此之后我得到一个例外:

LogUtils.log("SSL: urlConnection did set request properties.");

这是例外:

01-23 10:20:28.459: W/System.err(1623): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:477)
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.luni.internal.net.www.protocol.http.httpconnection.setupSecureSocket(httpconnection.java:185)
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:433)
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:378)
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)
01-23 10:20:28.459: W/System.err(1623):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:152)

我称之为的方式是:

String response = HttpRequestController
                            .getInstance()
                            .doRequest(ApiUrls.LOGIN,params,Method.POST,null);

它适用于运行2.3.x以上Android版本的任何其他设备(根据我的测试).

Android文档似乎没有关于2.3兼容性的主题.

解决方法

您必须告诉Android系统信任您的证书.您的问题是2.3之后的Android接受了您的证书,因为它包含在可信证书列表中,但是之前的版本不包括在内,因此,存在问题.

我建议你在Android文档上做:

// Load CAs from an InputStream
// (Could be from a resource or ByteArrayInputStream or ...)
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// From https://www.washington.edu/itconnect/security/ca/load-der.crt
InputStream caInput = new BufferedInputStream(new FileInputStream("load-der.crt"));
Certificate ca;
try {
    ca = cf.generateCertificate(caInput);
    System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
} finally {
    caInput.close();
}

// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null,null);
keyStore.setCertificateEntry("ca",ca);

// Create a TrustManager that trusts the CAs in our KeyStore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);

// Create an SSLContext that uses our TrustManager
SSLContext context = SSLContext.getInstance("TLS");
context.init(null,null);

// Tell the URLConnection to use a SocketFactory from our SSLContext
URL url = new URL("https://certs.cac.washington.edu/CAtest/");
HttpsURLConnection urlConnection =
    (HttpsURLConnection)url.openConnection();
urlConnection.setSSLSocketFactory(context.getSocketFactory());
InputStream in = urlConnection.getInputStream();
copyInputStreamToOutputStream(in,System.out);

我也在做同样的事情,它在每台设备上运行正常,使用Android 2.3及以下版本,我的网站证书是私有的.

试试吧,告诉我它现在是否正常工作.

希望它能帮到你!

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

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

android应用有三台主机进行身份验证和授权。最终主机是REST API。首次使用Oauth身份验证和授权过程,它可以正常工作。

但是,如果 用户 在登录并访问REST API提供的服务后 杀死了该应用程序 ,然后再次打开该应用程序,则会出现此问题。
在这段时间内,身份验证和授权过程不会发生,只有REST API会发生。
这是造成原因,java.security.cert.CertPathValidatorException
但在首次使用(登录然后使用该应用程序)期间正在工作。

有人可以解释此异常背后的情况以及该应用程序有什么问题。如果根据此SO答案将认证异常忽略如下,则此方法有效。

SSLSocketFactory sslSocketFactory = null;

        try {
            TrustManagerFactory tmf = TrustManagerFactory.getInstance(
                    TrustManagerFactory.getDefaultAlgorithm());
            // Initialise the TMF as you normally would,for example:
            try {
                tmf.init((KeyStore)null);
            } catch(KeyStoreException e) {
                e.printStackTrace();
            }
            TrustManager[] trustManagers = tmf.getTrustManagers();

            final X509TrustManager origTrustmanager = (X509TrustManager)trustManagers[0];

            // Create a trust manager that does not validate certificate chains
            TrustManager[] wrappedTrustManagers = new TrustManager[]{
                    new X509TrustManager() {
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return origTrustmanager.getAcceptedIssuers();
                        }

                        public void checkClientTrusted(X509Certificate[] certs,String authType) {
                            try {
                                origTrustmanager.checkClientTrusted(certs,authType);
                            } catch(CertificateException e) {
                                e.printStackTrace();
                            }
                        }

                        public void checkServerTrusted(X509Certificate[] certs,String authType) {
                            try {
                                origTrustmanager.checkServerTrusted(certs,authType);
                            } catch(CertificateException e) {
                                e.printStackTrace();
                            }
                        }
                    }
            };
            //TrustManager[] trustAllCerts = TrustManagerFactory.getInstance("SSL").getTrustManagers();

            // Install the all-trusting trust manager
            final SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(null,wrappedTrustManagers,new java.security.SecureRandom());
            // Create an ssl socket factory with our all-trusting manager
            sslSocketFactory = sslContext.getSocketFactory();
        } catch (NoSuchAlgorithmException | KeyManagementException e) {
            e.printStackTrace();
        }
        return sslSocketFactory;

我对http请求使用Okhttp 3。任何建议都将有助于解决问题。并且请告诉我是否使用上述代码段,是否违反安全规定?对应用程序的安全性有影响吗?

Android KSOAP2 SSL java.security.cert.CertPathValidatorException

Android KSOAP2 SSL java.security.cert.CertPathValidatorException

我尝试通过SSL连接到我的JAX-WS服务.没有SSL一切正常.

AsyncTask中的方法:

     HttpsTransportSE  androidHttpTransport = new HttpsTransportSE("10.0.2.2", 8181, "/Server/?wsdl", 10000);
             ((HttpsServiceConnectionSE) androidHttpTransport.getServiceConnection()).setSSLSocketFactory(trustAllHosts()
.getSocketFactory());

             //androidHttpTransport.debug=true;

             androidHttpTransport.call(getSoapAction(method), envelope);

获取SSLContext

public SSLContext allowAllSSL() {
            SSLContext context = null; 
            TrustManager[] trustManagers = null;
            try{
            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

             KeyStore keyStore = KeyStore.getInstance("pkcs12");
             InputStream in = cntx.getResources().openRawResource(R.raw.client_keystore);
             try {
             keyStore.load(in, "password".tochararray());
             } catch (CertificateException e) {
             // Todo Auto-generated catch block
             e.printstacktrace();
             } finally {
             in.close();
             }
             tmf.init(keyStore);


                if (trustManagers == null) { 
                        trustManagers = new TrustManager[] { new Fakex509trustmanager() }; 
                } 

                try { 
                        context = SSLContext.getInstance("SSL"); 
                        context.init(null, tmf.getTrustManagers(), new SecureRandom()); 
                } catch (NoSuchAlgorithmException e) { 
                        e.printstacktrace(); 
                } catch (KeyManagementException e) { 
                        e.printstacktrace(); 
                } 

           HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
           HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
               public boolean verify(String hostname, SSLSession session) {
                    return true;
                  }
                });
            }catch(Exception ex)
            {
                Log.e(TAG,"allowAllSSL Failed: "+ex.toString());
            }
           return context;
        } 

我收到此错误日志:

12-18 07:51:42.161: E/Example:logonAsync(3161): doInBackground Failed: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
12-18 07:51:42.161: W/System.err(3161): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
12-18 07:51:42.169: W/System.err(3161):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:401)
12-18 07:51:42.169: W/System.err(3161):     at libcore.net.http.httpconnection.setupSecureSocket(httpconnection.java:209)
12-18 07:51:42.169: W/System.err(3161):     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:478)
12-18 07:51:42.169: W/System.err(3161):     at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)

解决方法:

我发现问我的问题:在MainAsync中:

 HttpsTransportSE  androidHttpTransport = new HttpsTransportSE(10.0.2.2, 8181, "/server/?wsdl", 10000);
             ((HttpsServiceConnectionSE) androidHttpTransport.getServiceConnection()).setSSLSocketFactory(trustAllHosts().getSocketFactory());


protected  SSLContext trustAllHosts()
{   
    return allowAllSSL();
}

 public SSLContext allowAllSSL() {
        SSLContext context = null; 
        TrustManager[] trustManagers = null;
        KeyManagerFactory mgrFact;
        try{
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        mgrFact = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

         KeyStore keyStore = KeyStore.getInstance("pkcs12");
         InputStream in = cntx.getResources().openRawResource(R.raw.keystore);
         try {
         keyStore.load(in, "password".tochararray());
         mgrFact.init(keyStore, "password".tochararray());
         } catch (CertificateException e) {
         // Todo Auto-generated catch block
         e.printstacktrace();
         } finally {
         in.close();
         }
         tmf.init(keyStore);


            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() 
            {    
                    @Override 
                    public boolean verify(String hostname, SSLSession session) { 

                            return true; 
                    } 

            }); 


            if (trustManagers == null) { 
                    trustManagers = new TrustManager[] { new Fakex509trustmanager() }; 
            }

            final TrustManager[] trustAllCerts = new TrustManager[] {new x509trustmanager() {
                public X509Certificate[] getAcceptedissuers() {
                    System.out.println("getAcceptedissuers");
                     return null;
                }
                public void checkServerTrusted(X509Certificate[] chain, String authType)
                        throws CertificateException {
                    System.out.println("Сведения о сертификате : " +       chain[0].getIssuerX500Principal().getName() + "\n Тип авторизации : " + authType);
                }
                public void checkClientTrusted(X509Certificate[] chain, String authType)
                        throws CertificateException {
                    System.out.println("checkClientTrusted : " + authType);
                }
            } };
            //tmf.getTrustManagers()
            try { 
                    context = SSLContext.getInstance("TLS"); 
                    context.init(mgrFact.getKeyManagers(), trustAllCerts, new SecureRandom()); 
            } catch (NoSuchAlgorithmException e) { 
                    e.printstacktrace(); 
            } catch (KeyManagementException e) { 
                    e.printstacktrace(); 
            } 

       HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
       HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
           public boolean verify(String hostname, SSLSession session) {
                return true;
              }
            });
        }catch(Exception ex)
        {
            Log.e(TAG,"allowAllSSL Failed: "+ex.toString());
        }
       return context;
    } 

关于android – Glide – javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorExcept的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android 11的javax.net.ssl.SSLHandshakeException、Android 2.3.x javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚、Android java.security.cert.CertPathValidatorException:找不到证书路径的信任锚、Android KSOAP2 SSL java.security.cert.CertPathValidatorException的相关知识,请在本站寻找。

本文标签: