我知道有很多关于 Android 中固定证书的问题,但我找不到我要找的东西......
我继承SSLSocketFactory并重写该checkServerTrusted()方法。在此方法中,我执行以下操作:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate ca = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(PUB_KEY.getBytes("UTF-8")));
for (X509Certificate cert : chain) {
// Verifing by public key
cert.verify(ca.getPublicKey());
}
Run Code Online (Sandbox Code Playgroud)
链中的一项进行了验证,而另一项则没有进行验证(这会抛出Exception)。我想我无法理解证书链是如何工作的。
是否应该使用同一个公共证书来验证链中的所有证书?