Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未使用SSL找到证书路径的信任锚点_Android_Ssl - Fatal编程技术网

Android 未使用SSL找到证书路径的信任锚点

Android 未使用SSL找到证书路径的信任锚点,android,ssl,Android,Ssl,您好,我正在尝试在android上与SSL握手,我收到以下错误: 10-21 15:39:33.279: W/System.err(500): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 10-21 15:39:33.279: W/System.err(500): at org.

您好,我正在尝试在android上与SSL握手,我收到以下错误:

10-21 15:39:33.279: W/System.err(500): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-21 15:39:33.279: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:381)
10-21 15:39:33.279: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.<init>(OpenSSLSocketImpl.java:681)
10-21 15:39:33.279: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getOutputStream(OpenSSLSocketImpl.java:618)
10-21 15:39:33.279: W/System.err(500):  at com.example.workoutlog.TestSSL.<init>(TestSSL.java:43)
10-21 15:39:33.279: W/System.err(500):  at com.example.workoutlog.HomePage$GetHandShake.doInBackground(HomePage.java:1816)
10-21 15:39:33.279: W/System.err(500):  at com.example.workoutlog.HomePage$GetHandShake.doInBackground(HomePage.java:1)
10-21 15:39:33.289: W/System.err(500):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-21 15:39:33.289: W/System.err(500):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-21 15:39:33.289: W/System.err(500):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-21 15:39:33.289: W/System.err(500):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-21 15:39:33.289: W/System.err(500):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-21 15:39:33.289: W/System.err(500):  at java.lang.Thread.run(Thread.java:856)
10-21 15:39:33.289: W/System.err(500): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-21 15:39:33.289: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:276)
10-21 15:39:33.289: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:197)
10-21 15:39:33.289: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:584)
10-21 15:39:33.299: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
10-21 15:39:33.299: W/System.err(500):  at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:378)
10-21 15:39:33.299: W/System.err(500):  ... 11 more
10-21 15:39:33.299: W/System.err(500): Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-21 15:39:33.299: W/System.err(500):  ... 16 more
10-21 15:39:33.299: W/dalvikvm(500): threadid=17: thread exiting with uncaught exception (group=0x40cf7930)
10-21 15:39:33.310: W/GAV2(500): Thread[AsyncTask #4,5,main]: dispatch call queued.  Need to call GAServiceManager.getInstance().initialize().
为什么我会犯这个错误?
谢谢。

我想您正在尝试使用自签名证书在dev服务器上连接。阅读下面的文章

public class TestSSL {

    SSLSocket sslsocket;
    Context context;

    public TestSSL(Context context)
    {
        SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();

        try {
            sslsocket = (SSLSocket) sslsocketfactory.createSocket("server", port);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        InputStream inputstream = null;
        try {
            inputstream = sslsocket.getInputStream();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
        BufferedReader bufferedreader = new BufferedReader(inputstreamreader);


        OutputStream outputstream = null;
        try {
            outputstream = sslsocket.getOutputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        OutputStreamWriter outputstreamwriter = new OutputStreamWriter(outputstream);
        BufferedWriter bufferedwriter = new BufferedWriter(outputstreamwriter);

        sslsocket.addHandshakeCompletedListener(new HandshakeCompletedListener() {

            @Override
            public void handshakeCompleted(HandshakeCompletedEvent event) {
                // TODO Auto-generated method stub
                Log.i("test", event.toString());
            }
        });

        try {
            sslsocket.startHandshake();
        } catch (IOException e) {
            e.printStackTrace();
        }  

    }       
}