我想驗證客戶端針對CRL提供的X509證書是否已被吊銷。 我已成功實例化一個java.security.cert.X509CRL
,但我檢索會話的證書具有問題:javax.security.cert.X509Certificate和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屬於javax.net.ssl
封裝,以及其方法getPeerCertificateChain()
返回javax.security.cert.X509Certificate[]
,這是不能被轉換爲java.security.cert.X509Certificate[]
那我需要餵養java.security.cert.X509CRL
。 怎麼辦?
與選項(我考慮吧),後來我需要使用X509證書的方法,所以這是配不上的問題我。 – user2891462
但是'Certificate'是抽象類 - 我敢打賭'cert [0]'是'instanceof'' X509Certificate'類。只需檢查它並投射 – MGorgon
@ user2891462如果不是,您可以執行像這樣執行的轉換'X509Certificate [] convertCertificates(Certificate [] certsIn)'方法:https://groups.google.com/forum/#!topic/android-開發人員/ HCiHwBKOsrI – MGorgon