友
问题陈述: 外部实体将证书的序列号发送到我的系统。使用该序列号,我的系统必须查找或获取证书详细信息(例如:通过在线下载或使用Java密钥库预加载)并将其用于签名验证。
我找不到如何使用序列号从在线下载证书。但是,即使它是,我也不会哎呀,因为你知道为什么。
相反,我想使用Java Key Store(JKS)并获取认证详细信息。但是JKS需要别名和密码。
那么,你现在建议我去那个外部实体的人,并要求他发送认证细节而不是序列号?如果是这样的安全合规性?因为我们正在使用远程供应架构为嵌入式UICC技术规范Versio 3.0开发电信域。
答案 0 :(得分:2)
CA仅发布其根证书和中间证书。序列号通常不用于下载,但最终颁发的证书中包含URL。
总结:您无法按序列号查找证书,除非您的CA具有要下载的特定服务,或者您有预先配置的CA证书列表,例如在密钥库中。
假设您有一个包含可能证书的密钥库,您可以列出所有可用的别名,加载证书并检查序列号是否与提供的序列号匹配。您根本不需要任何密码。
Enumeration enumeration = keystore.aliases();
while(enumeration.hasMoreElements()) {
String alias = (String)enumeration.nextElement();
X509Certificate certificate = (X509Certificate) keystore.getCertificate(alias);
BigInteger serialNumber = certificate.getSerialNumber()
}
请注意,不同CA之间的序列号不是唯一的