Android(安卓)内验证Https证书问题
16lz
2021-12-04
Android P移除BC相关的算法,可以使用AndroidOpenSSLjava.security.cert.CertificateException: X.509 not foundCaused by: java.security.NoSuchAlgorithmException: The BC provider no longer provides an implementation for CertificateFactory.X.509. Please see https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html for more details.CertificateFactory certificateFactory;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { //适配Android P及以后版本,否则报错NoSuchAlgorithmException certificateFactory = CertificateFactory.getInstance("X.509", "AndroidOpenSSL");//} else { certificateFactory = CertificateFactory.getInstance("X.509", "BC");}//CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509","BC");//, "BC"Logger.e("TAG", " certificates.length: " + certificates.length);//CertificateFactory cf = CertificateFactory.getInstance("X.509");Certificate ca = certificateFactory.generateCertificate(certificates[0]);pinningPublicKey = new BigInteger(1, ca.getPublicKey().getEncoded()).toString(16);KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());keyStore.load(null, null);keyStore.setCertificateEntry("certificateAlias", ca);for (InputStream certificate : certificates) { try { if (certificate != null) certificate.close(); } catch (IOException e) { }}TrustManagerFactory trustManagerFactory = null;trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());trustManagerFactory.init(keyStore);TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
java.security.cert.CertificateException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException: inStream is empty
如果用Certificate ca = certificateFactory.generateCertificate(certificates[0]);的时候
再次keyStore.setCertificateEntry("certificateAlias", certificateFactory.generateCertificate(certificates[0]));就会出现上面错误
keyStore.setCertificateEntry("certificateAlias", ca); 就没有问题
顺带记录下问题
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- android 源码下载及问题
- Android的support v4中的Fragment的一个Bug
- android调用本地录制程序获取录制文件路径的问题
- Android(安卓)WebView 加载网页遇到的问题
- 新建项目Android(安卓)Support library not installed问题
- The android gradle plugin version 3.0.0-alpha1 is too old
- 安卓面试中遇到的问题2017.2
- ReactNative开发android,RN版本升级后遇到的 error: Duplicate fi