Ich mag das X509-Zertifikat von einem Client gegen einen CRL präsentiert, um zu überprüfen, um zu sehen, ob es widerrufen wurde. Ich habe instanziiert erfolgreich eine java.security.cert.X509CRL
, aber ich habe Probleme das Zertifikat der Sitzung abrufen:Inkompatibilität zwischen javax.security.cert.X509Certificate und java.security.cert.X509Certificate
try {
SSLSocket s = (SSLSocket) serverSocket.accept();
s.setSoTimeout(TIMEOUT_RW * 1000);
s.startHandshake();
SSLSession session = s.getSession();
X509Certificate[] cert = session.getPeerCertificateChain();
if (crl.isRevoked(cert[0])) {
System.err.println("Attempted to stablish connection using revoked certificate");
} else {
...
}
} catch (Exception ex) {
System.err.println("Something went wrong");
}
SSLSession gehört zur javax.net.ssl
Paket, und seine Methode getPeerCertificateChain()
eine javax.security.cert.X509Certificate[]
zurückgibt, die dem java.security.cert.X509Certificate[]
umgewandelt kann nicht sein, dass Ich muss die java.security.cert.X509CRL
füttern. Wie kann es gemacht werden?
Das Problem mit dieser Option (ich es in Betracht gezogen) ist, dass später muss ich Methoden der X509Certificate verwenden, es war also nicht gut genug für mich. – user2891462
Aber 'ist Zeugnis für abstrakte Klasse - ich wette, dass' cert [0] 'ist' 'instanceof' X509Certificate' Klasse. Schauen Sie doch einfach und werfen – MGorgon
@ user2891462 Wenn nicht, Sie Umwandlung wie dies umgesetzt 'X509Certificate [] convertCertificates (Certificate [] certsIn)' Methode ausführen: https://groups.google.com/forum/#!topic/android- Entwickler/HCiHwBKOsrI – MGorgon