gpt4 book ai didi

Android X509TrustManager#checkServerTrusted 在 API > 23 上抛出 CertificateException

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:58 26 4
gpt4 key购买 nike

我正在尝试将自签名证书导入受信任的证书,以便默认浏览器接受与使用它的网站的连接。

使用 https://github.com/bitfireAT/cadroid 中的代码它归结为通过 X509TrustManager#checkServerTrusted() 进行的检查,它适用于 API 23 但不适用于 API 24/25(由 targetSdkVersion 设置)。

public boolean isTrusted() throws NoSuchAlgorithmException, KeyStoreException {
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init((KeyStore) null);
X509TrustManager tm = (X509TrustManager) tmf.getTrustManagers()[0];

try {
tm.checkServerTrusted(certificates, certificates[0].getPublicKey().getAlgorithm());
return true;
} catch (CertificateException e) {
return false;
}
}

证书已成功导入并受信任(由浏览器验证/它显示在系统设置 > 安全 > CA 证书中)因此它不应抛出异常(并且不会在 API 23 上抛出)。

我发现 Android 7.0 的唯一变化是没有提及任何相关内容 (https://developer.android.com/about/versions/nougat/android-7.0-changes.html#tls-ssl)。


有什么想法,如何检查 API > 23 上的证书是否受信任?

最佳答案

我刚找到 https://stackoverflow.com/a/38770284/2170109这解决了我的问题。

By default, secure connections (using protocols like TLS and HTTPS) from all apps trust the pre-installed system CAs, and apps targeting Android 6.0 (API level 23) and lower also trust the user-added CA store by default.

所以我需要在 list 中包含一个 networkSecurityConfig 并允许用户证书。

关于Android X509TrustManager#checkServerTrusted 在 API > 23 上抛出 CertificateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44024463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com