如何检查X509证书是否已被Java吊销?

我在各地搜索过Google,并在其他社区中询问过,并且继续前进到讨论该规范的Oracle文档。但是,该文档更多地涵盖了方法的命名以及整个体系结构,实际上并未提出讨论如何实际编写一些代码来检查x509证书是否被撤销的方法。

也许这只是我头上的办法?但是如果有人可以帮助我,我肯定会感激不尽,我已经将头撞在墙上的墙上已经有大约一周的时间了。

回答:

每个CA都会发布已撤销的证书列表。此列表包括证书的序列号和吊销日期

要获取证书吊销列表(CRL)的URL,请执行以下步骤

  • 打开证书
  • 转到“详细信息”选项卡,然后在详细信息列表中找到“ CRL分发点”字段

它将向您显示诸如此类的价值

[1] CRL分发点分发点名称:全名:URL = mscrl.microsoft.com / pki / mscorp / crl /

msitwww2.crl URL = crl.microsoft.com / pki / mscorp / crl / msitwww2.crl

因此,在您的代码中,您需要下载这些文件并检查其中的证书序列号,以查看其是否被吊销

在下面的示例代码中找到它

public class CertVerification {

public static void main(String[] args) throws Exception {

String certificatePath = "C:\\Users\\user1\\Desktop\\test.cer";

CertificateFactory cf = CertificateFactory.getInstance("X509");

X509Certificate certificate = null;

X509CRLEntry revokedCertificate = null;

X509CRL crl = null;

certificate = (X509Certificate) cf.generateCertificate(new FileInputStream(new File(certificatePath)));

URL url = new URL("http://<someUrl from certificate>.crl");

URLConnection connection = url.openConnection();

try(DataInputStream inStream = new DataInputStream(connection.getInputStream())){

crl = (X509CRL)cf.generateCRL(inStream);

}

revokedCertificate = crl.getRevokedCertificate(certificate.getSerialNumber());

if(revokedCertificate !=null){

System.out.println("Revoked");

}

else{

System.out.println("Valid");

}

}

}

我找到了该示例类来检查证书,它还通过证书的CA和证书链颁发的CRL进行验证,因此您也无需提供CRL URL

https://svn.cesecore.eu/svn/ejbca/branches/Branch_3_2_3_utf8/ejbca/doc/samples/ValidateCertUseCRL.java

以上是 如何检查X509证书是否已被Java吊销? 的全部内容, 来源链接: utcz.com/qa/426048.html

回到顶部