Не удается проверить самоподписанный сертификат в AndroidQ - PullRequest
0 голосов
/ 28 июня 2019

В AndroidQ я не могу проверить самоподписанный листовой сертификат, используя корневой сертификат, установленный на «доверенные учетные данные» / «учетные данные пользователя» на устройстве.

Были ли какие-либо изменения в проверке сертификатов в AndroidQ?

byte[] certData = ...;

X509Certificate cert = (X509Certificate)CertificateFactory
    .getInstance("X.509")
    .generateCertificate(new ByteArrayInputStream(certData));

TrustManagerFactory tmf = TrustManagerFactory.getInstance(
    TrustManagerFactory.getDefaultAlgorithm()
);
tmf.init((KeyStore)null);
TrustManager[] tms = tmf.getTrustManagers();
X509TrustManager tm = (X509TrustManager)tms[0];

trustManager.checkClientTrusted(
    new X509Certificate[] { cert },
    cert.getPublicKey().getAlgorithm()
);

Это работает правильно на любых версиях Android, но в AndroidQ checkClientTrusted () выдает:

java.security.cert.CertificateException: недопустимый сертификат: CN = Leaf, O = None,L = TimeNSpace, ST = хаос, C = US

...