小编The*_*Yam的帖子

Android自签名证书:未找到证书路径的信任锚

我知道这个主题在很多地方都有讨论,但在我经历了几乎所有这些之后,我决定创建我的第一个StackOverflow问题......

问题如下:

我想连接到使用证书来限制访问的安全Web服务(https),以及用于验证用户身份的用户名/密码.所以我有一个客户端证书(p12文件)和一个服务器证书(pem或der文件).我尝试使用HttpURLConnection类,因为从我所听到的,Android上将不再支持Apache库.

所以这是我的实现(serverCert和clientCert是我的文件的完整路径):

        // Load CAs from our reference to the file
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        InputStream caInput = new BufferedInputStream(new FileInputStream(serverCert));
        X509Certificate serverCertificate;

        try {
            serverCertificate = (X509Certificate)cf.generateCertificate(caInput);
            System.out.println("ca=" + serverCertificate.getSubjectDN());
        } finally {
            caInput.close();
        }
        Log.d(TAG, "Server Cert: " + serverCertificate);

        // Create a KeyStore containing our trusted CAs
        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        trustStore.load(null);
        trustStore.setCertificateEntry("my ca", serverCertificate);

        //Load the Client certificate in the keystore
        KeyStore keyStore = KeyStore.getInstance("PKCS12");
        FileInputStream fis = new FileInputStream(clientCert);
        keyStore.load(fis,CLIENT_PASSWORD);

        // Create a …
Run Code Online (Sandbox Code Playgroud)

ssl android certificate sslhandshakeexception httpsurlconnection

7
推荐指数
1
解决办法
4398
查看次数