1 回答
TA贡献1812条经验 获得超5个赞
您正在寻找证书链,这是 PKI(公钥基础设施)中常见的东西。一个证书可以对另一个证书进行签名,以表明该证书是可信的。
在简单的示例中,将有一个自签名且受信任的根证书 - 每个人都信任该证书。接下来,您可以要求该证书的所有者使用 Root 的证书私钥对您的证书进行签名。因此,如果有人想使用您的证书,他可以检查您的证书是否由根证书签名,并且如果他信任根证书 - 他也可以信任您。
在 Java 中,您可以使用如下命令检查证书是否由相应证书的私钥签名:
X509Certificate yourCert = ...
X509Certificate root = ...
try {
yourCert.verify(root.getPublicKey()); }
catch (CertificateException | NoSuchAlgorithmException | InvalidKeyException | NoSuchProviderException e) {
//handle wrong algos
} catch (SignatureException ex) {
//signature validation error
}
其Certificate::verify
目的是:
验证此证书是否是使用与指定公钥对应的私钥签署的。
由于X509Certificate扩展,Certificate您可以在实现上使用此方法X509Certificate(因为X509Certificate是一个abstract类)。
您还可以查看X509Certificate::verify(PublicKey, Provider)
哪些需要PublicKey
和Provider
实施。
添加回答
举报