从 java 密钥库获取证书详细信息

Get certificate details from java key store

朋友,

问题陈述: 外部实体将证书的 序列号 发送到我的系统。使用该序列号,我的系统必须找出或获取证书详细信息(例如:通过在线下载或使用 Java 密钥库预加载)并将其用于签名验证。

我找不到如何使用序列号从网上下载证书。但是,即使它是,我也不会抱怨,因为你知道为什么。

相反,我想使用 Java 密钥库 (JKS) 并获取认证详细信息。但 JKS 需要别名和密码。

那么,现在您是否建议我去找那个外部实体人员,让他发送认证详细信息而不是序列号?如果是这样,是否符合安全要求?因为我们正在使用针对嵌入式 UICC 技术规范版本 3.0 的远程配置架构在电信领域工作。

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 之间不是唯一的