[英]Use of isKeyEntry(alias) in KeyStore - Java
我想加載密鑰庫文件並獲取其根SSL證書的詳細信息。
我在上面的鏈接中看到了代碼。 該代碼也在下面可見。 keyStore.isKeyEntry(alias)
的用途是什么?
我檢查了JavaDocs,它說
如果給定別名標識的條目是通過調用setKeyEntry創建的,或者是通過調用帶有PrivateKeyEntry或SecretKeyEntry的setEntry創建的,則返回true。
那么,它的用途是什么?
boolean isAliasWithPrivateKey = false;
KeyStore keyStore = KeyStore.getInstance("JKS");
// Provide location of Java Keystore and password for access
keyStore.load(new FileInputStream(jksPath), jksPassword.toCharArray());
// iterate over all aliases
Enumeration<String> es = keyStore.aliases();
String alias = "";
while (es.hasMoreElements()) {
alias = (String) es.nextElement();
// if alias refers to a private key break at that point
// as we want to use that certificate
if (isAliasWithPrivateKey = keyStore.isKeyEntry(alias)) {
break;
}
}
if (isAliasWithPrivateKey) {
KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias,
new KeyStore.PasswordProtection(jksPassword.toCharArray()));
PrivateKey myPrivateKey = pkEntry.getPrivateKey();
// Load certificate chain
Certificate[] chain = keyStore.getCertificateChain(alias);
certDetails = new CertificateDetails();
certDetails.setPrivateKey(myPrivateKey);
certDetails.setX509Certificate((X509Certificate) chain[0]);
}
Java密鑰庫中有3種類型的條目:
如Java文檔中所述, true
您有私鑰或私鑰,則KeyStore.isKeyEntry(alias)
返回true
。
如果該條目是密鑰,則代碼示例將失敗:
`KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, new KeyStore.PasswordProtection(jksPassword.toCharArray()));`
最好使用:
`KeyStore.entryInstanceOf(alias , KeyStore.PrivateKeyEntry.class)`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.