在java中,从密钥库获取证书不基于别名
我正在使用下面的代码根据别名从密钥库获取证书在java中,从密钥库获取证书不基于别名,java,digital-signature,x509certificate,keystore,mscapi,Java,Digital Signature,X509certificate,Keystore,Mscapi,我正在使用下面的代码根据别名从密钥库获取证书 KeyStore keyStore = KeyStore.getInstance("Windows-MY"); Enumeration aliasesEnum = keyStore.aliases(); while(aliasesEnum.hasMoreElements()) { aAliasName = (String)aliasesEnum.nextElement(); X509
KeyStore keyStore = KeyStore.getInstance("Windows-MY");
Enumeration aliasesEnum = keyStore.aliases();
while(aliasesEnum.hasMoreElements())
{
aAliasName = (String)aliasesEnum.nextElement();
X509Certificate certificate = (X509Certificate)keyStore.getCertificate(aAliasName);
}
有没有办法从当前令牌获取别名而不是从密钥库获取别名
提前感谢。除了知道别名外,无法获取特定证书 最佳实践是在您的用例中使用唯一的别名,这样您就可以知道您将获得哪个证书
如果您是通过密钥库api存储证书,则可以执行
containsAlias(别名)
以查看别名是否已存在,然后再进行保存。通常别名是唯一的。这是MSCAPI密钥库特有的问题。关于此问题,有几个错误报告(其中一些非常旧):
按照最后一个链接,它包含一个变通方法。基本上,您必须通过反射API将别名修改为唯一的名称(请参见链接中的代码)。这不完全是一个干净的解决方案,但不幸的是这是唯一的办法。谢谢您的回复。我通过这个链接修复了这个问题。现在我有另一个问题。请检查更新的问题。谢谢你的回复。我通过以下链接修复了此问题。我认为这与您提供的上一个链接相同。现在我有另一个问题,请检查更新的问题。如果您现在有另一个问题,请创建一个新问题。在回答问题后更改问题是一种不好的做法,因为这样一来,答案就与问题不匹配了。@Vijaya,正如Omikron所指出的,请回复您的问题,并为您的新问题打开一个新问题。因此,下面的答案将与问题相匹配,将来访问此问题的人知道如何解决他们的问题。你可以接受解决你问题的答案,从而结束这个问题。