我需要獲得不可否認和數字簽名證書。我已經實現了這個代碼來獲得這些證書:如何爲PKI客戶端獲取非拒絕和數字簽名證書
keyStore.load(null, null);
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
if (keyStore.isKeyEntry(alias)) {
java.security.cert.Certificate certificate = keyStore.getCertificate(alias);
}
}
問題是,數字和不可抵賴性證書具有相同的別名。所以當我打電話給keystore.getCertificate
時,系統總是會返回第一個結果,儘管在certmgr.msc窗口中我可以看到有兩個證書存在,而LOOP塊執行兩次,但系統總是會從第一個證書返回重複結果。我如何解決這個問題?
我絕對不會問如何區分不可否認性和數字簽名的問題。我問的是提取證書的過程,因此,請您提出一種加載兩個證書的方法,因爲我現在正在執行的方式會檢測兩個證書,但在每次迭代中加載相同的對象 – user435245
已經更新了我的答案,所以現在列表將包含密鑰存儲所擁有的所有證書。 – divanov
這是正確的想法,但不幸的是,由於Windows存儲中的實現細節(bug?),這不會列出商店中的所有證書...... – Bruno