Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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_Digital Signature_X509certificate_Keystore_Mscapi - Fatal编程技术网

在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所指出的,请回复您的问题,并为您的新问题打开一个新问题。因此,下面的答案将与问题相匹配,将来访问此问题的人知道如何解决他们的问题。你可以接受解决你问题的答案,从而结束这个问题。