Chcę zweryfikować certyfikat X509 przedstawiony przez klienta przeciwko CRL, aby sprawdzić, czy został odwołany. Mam powodzeniem instanciated się java.security.cert.X509CRL
, ale mam problemy z pobraniem certyfikat sesji:Niekompatybilność między javax.security.cert.X509Certificate a java.security.cert.X509Certyfikat
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 należącego do pakietu javax.net.ssl
, a jego metody getPeerCertificateChain()
zwraca javax.security.cert.X509Certificate[]
, które nie mogą być zamieniane na java.security.cert.X509Certificate[]
że Muszę nakarmić java.security.cert.X509CRL
. Jak to zrobić?
Problem z tej opcji (I rozważa to) jest to, że później trzeba użyć metody X509Certificate, więc nie było wystarczająco dobre dla mnie. – user2891462
Ale 'Certificate' to klasa abstrakcyjna - założę się, że' cert [0] 'jest klasą' instanceof' 'X509Certificate'. Wystarczy go sprawdzić i odrzucić: – MGorgon
@ user2891462 Jeśli nie, możesz wykonać konwersję taką jak ta zaimplementowana 'X509Certificate [] convertCertificates (Certificate [] certsIn)' method: https://groups.google.com/forum/#!topic/android- programistów/HCiHwBKOsrI – MGorgon