Кажется, что это работает: /(\{(?:\{.*\}|[^\{])*\})/m
Вы можете запустить следующую команду, чтобы отобразить содержимое файла хранилища ключей (и псевдонима):
keytool -v -list -keystore .keystore
Если вы ищете определенный псевдоним, вы также можете указать его в команде :
keytool -list -keystore .keystore -alias foo
Если псевдоним не найден, в нем будет отображаться исключение:
ошибка keytool: java.lang.Exception: псевдоним не существует
blockquote>
Вы можете запускать из Java-кода.
try {
File file = new File(keystore location);
is = new FileInputStream(file);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "password";
keystore.load(is, password.toCharArray());
Enumeration enumeration = keystore.aliases();
while(enumeration.hasMoreElements()) {
String alias = (String)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();
}
}
Класс сертификата содержит всю информацию о хранилище ключей.
UPDATE-OBTAIN PRIVATE KEY
Key key = keyStore.getKey(alias, password.toCharArray());
String encodedKey = new Base64Encoder().encode(key.getEncoded());
System.out.println("key ? " + encodedKey);
@prateek Надеюсь, это то, что вы ищете!
В этом списке будут указаны все сертификаты:
keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"
В bash-подобной среде вы можете использовать:
keytool -list -v -keystore cacerts.jks | grep 'Alias name:' | grep -i foo
Эта команда состоит из 3 частей. Как указано выше, первая часть будет перечислять все доверенные сертификаты со всеми подробностями, поэтому вторая часть предназначена для фильтрации только информации о псевдонимах среди этих деталей. И, наконец, в третьей части вы можете найти конкретный псевдоним (или его часть). -i включает режим, нечувствительный к регистру. Таким образом, данная команда даст все псевдонимы, содержащие шаблон «foo», т. Е. foo, 123_FOO, fooBar и т. д. Для получения дополнительной информации man grep
.
Чтобы получить все детали, мне пришлось добавить опцию -v для ответа romaintaz:
keytool -v -list -keystore <FileName>.keystore
-v
, то сертификат печатается в формате для чтения человеком с дополнительной информацией, такой как владелец, эмитент, серийный номер и любые расширения. & quot; (см. Справочник инструментов Java SE, команда «Отобразить данные», «Список» ).
– Eido95
24 August 2017 в 12:46
KeyStore Explorer визуальный инструмент с открытым исходным кодом для управления хранилищами ключей.
/path/to/keystore
вместо.keystore
будет более понятным для читателя. В любом случае, это правильный ответ! – Andrea Romagnoli 11 July 2018 в 14:09