Android 内验证Https证书问题

时间:2025-02-08 07:58:16
Android P移除BC相关的算法,可以使用AndroidOpenSSL
: X.509 not found
Caused by: : The BC provider no longer provides an implementation for .509.  Please see /2018/03/ for more details.

CertificateFactory certificateFactory;
if (.SDK_INT >= Build.VERSION_CODES.P) {
    //适配Android P及以后版本,否则报错NoSuchAlgorithmException
    certificateFactory = ("X.509", "AndroidOpenSSL");//
} else {
    certificateFactory = ("X.509", "BC");
}
//CertificateFactory certificateFactory = ("X.509","BC");//, "BC"
("TAG", " : " + );


//CertificateFactory cf = ("X.509");
Certificate ca = (certificates[0]);
pinningPublicKey = new BigInteger(1, ().getEncoded()).toString(16);
KeyStore keyStore = (());
(null, null);
("certificateAlias", ca);
for (InputStream certificate : certificates) {
    try {
        if (certificate != null)
            ();
    } catch (IOException e) {
    }
}
TrustManagerFactory trustManagerFactory = null;
trustManagerFactory = (());
(keyStore);
TrustManager[] trustManagers = ();

 

: .OpenSSLX509CertificateFactory$ParsingException: .OpenSSLX509CertificateFactory$ParsingException: inStream is empty
如果用Certificate ca = (certificates[0]);的时候

再次("certificateAlias", (certificates[0]));就会出现上面错误

("certificateAlias", ca); 就没有问题

顺带记录下问题