답변:
다음 명령을 실행하여 키 저장소 파일의 컨텐츠 (및 별명)를 나열 할 수 있습니다.
keytool -v -list -keystore .keystore
특정 별명을 찾으려면 다음 명령에서 별명을 지정할 수도 있습니다.
keytool -list -keystore .keystore -alias foo
별명이 없으면 예외를 표시합니다.
키 도구 오류 : 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
이 명령은 세 부분으로 구성됩니다. 위에서 언급했듯이 첫 번째 부분에는 모든 신뢰할 수있는 인증서가 모든 세부 정보와 함께 나열되므로 두 번째 부분은 해당 세부 정보 중 별칭 정보 만 필터링합니다. 마지막으로 세 번째 부분에서는 특정 별칭 (또는 그 일부)을 검색 할 수 있습니다. -i 회전에 대소 문자를 구분 모드. 따라서 주어진 명령은 패턴 'foo', fe foo, 123_FOO, fooBar 등을 포함하는 모든 별칭을 생성합니다 man grep
. 자세한 내용은 .
모든 인증서가 나열됩니다.
keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"