回答:
次のコマンドを実行して、キーストアファイルのコンテンツ(およびエイリアス名)を一覧表示できます。
keytool -v -list -keystore .keystore
特定のエイリアスを探している場合は、コマンドで指定することもできます。
keytool -list -keystore .keystore -alias foo
エイリアスが見つからない場合は、例外が表示されます。
keytoolエラー:java.lang.Exception:エイリアスが存在しません
/path/to/keystore
代わりに.keystore
、読者に、より明確になります。とにかく正解です!
すべての詳細を取得するために、romaintazの回答に-vオプションを追加する必要がありました。
keytool -v -list -keystore <FileName>.keystore
-v
オプションを指定すると、所有者、発行者、シリアル番号、拡張子などの追加情報とともに、人間が読める形式で証明書が印刷されます。」(参照:Java SEツールリファレンス、データの表示コマンド、-listオプション)
Javaコードから実行できます。
try {
File file = new File(keystore location);
InputStream is = new FileInputStream(file);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "password";
keystore.load(is, password.toCharArray());
Enumeration<String> enumeration = keystore.aliases();
while(enumeration.hasMoreElements()) {
String alias = enumeration.nextElement();
System.out.println("alias name: " + alias);
Certificate certificate = keystore.getCertificate(alias);
System.out.println(certificate.toString());
}
} catch (java.security.cert.CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(null != is)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
証明書クラスは、キーストアに関するすべての情報を保持します。
更新-プライベートキーを取得
Key key = keyStore.getKey(alias, password.toCharArray());
String encodedKey = new Base64Encoder().encode(key.getEncoded());
System.out.println("key ? " + encodedKey);
@prateekホープこれがあなたが探しているものです!
java.security.UnrecoverableKeyException
これは、実際にエイリアスパスワードを取得したいこのコードを試したときにスローされる例外です
KeyStore Explorerは、 キーストアを管理するためのオープンソースのビジュアルツールです。
bashのような環境では、以下を使用できます。
keytool -list -v -keystore cacerts.jks | grep 'Alias name:' | grep -i foo
このコマンドは3つの部分で構成されています。上記のように、最初の部分ではすべての信頼できる証明書がすべての詳細とともに一覧表示されます。そのため、2番目の部分ではこれらの詳細の中からエイリアス情報のみをフィルタリングします。そして最後に、3番目の部分で特定のエイリアス(またはその一部)を検索できます。-iターンの大文字小文字を区別しないモード。したがって、指定されたコマンドは、パターン「foo」、fe foo、123_FOO、fooBarなどを含むすべてのエイリアスを生成します。詳細については、を参照してくださいman grep
。
これにより、すべての証明書がリストされます。
keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"