Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java密钥存储获取证书详细信息_Java_Certificate_Keystore_Sim Card - Fatal编程技术网

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

从java密钥存储获取证书详细信息,java,certificate,keystore,sim-card,Java,Certificate,Keystore,Sim Card,朋友们 问题陈述: 外部实体将证书的序列号发送到我的系统。使用该序列号,我的系统必须找到或获取证书的详细信息(例如:通过在线下载或使用Java密钥存储预加载),并使用它进行签名验证 我找不到如何使用序列号从网上下载证书。但是,即使是我也不会伤心,因为你知道为什么 相反,我想使用Java密钥存储(JKS)并获取认证详细信息。但是JKS需要别名和密码 那么,现在你建议我去找那个外部实体的家伙,让他发送认证详细信息而不是序列号吗?如果是这样的话,这是安全合规性吗?由于我们正在电信领域使用嵌入式UICC

朋友们

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

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

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


那么,现在你建议我去找那个外部实体的家伙,让他发送认证详细信息而不是序列号吗?如果是这样的话,这是安全合规性吗?由于我们正在电信领域使用嵌入式UICC技术规范3.0版的远程资源调配体系结构进行工作。

CAs只发布其根证书和中间证书。序列号通常不用于下载它们,但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之间的序列号不是唯一的,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之间不是唯一的

非常感谢朋友。。你的指点现在是我的出发点。在您的回复后,我试图进行调查,但对于我的问题,假设我有不同的MNO(移动N/w运营商)向我发送证书序列号,并且我必须授权他们签名。。根据您的上述解释,很明显预设置是最好的选择(因为thr不具备使用序列号在线下载的功能),但是他们有没有办法从没有序列号的密钥库获取证书详细信息?您可以使用
keystore.alias()
,获取所有可用的证书,然后使用别名加载
X509证书
。见javadoc你有所有的证书数据再次感谢!!!这次讨论满足了我的全部要求。。为佩德罗夫干杯谢谢你的朋友。。你的指点现在是我的出发点。在您的回复后,我试图进行调查,但对于我的问题,假设我有不同的MNO(移动N/w运营商)向我发送证书序列号,并且我必须授权他们签名。。根据您的上述解释,很明显预设置是最好的选择(因为thr不具备使用序列号在线下载的功能),但是他们有没有办法从没有序列号的密钥库获取证书详细信息?您可以使用
keystore.alias()
,获取所有可用的证书,然后使用别名加载
X509证书
。见javadoc你有所有的证书数据再次感谢!!!这次讨论满足了我的全部要求。。为佩德罗夫干杯