많은 .keystore 파일이 있으며 특정 CN 및 별명을 가진 파일을 찾아야합니다. keytool, jarsigner 또는 다른 도구를 사용하여 수행 할 수 있습니까? 특정 키 저장소가 특정 APK에 서명하는 데 사용되었는지 확인하는 방법을 찾았지만 각 파일에서 별명 및 인증서 이름을 가져와야합니다.
답변
다음 명령을 실행하여 키 저장소 파일의 컨텐츠 (및 별명)를 나열 할 수 있습니다.
keytool -v -list -keystore .keystore
특정 별명을 찾으려면 다음 명령에서 별명을 지정할 수도 있습니다.
keytool -list -keystore .keystore -alias foo
별명이 없으면 예외를 표시합니다.
키 도구 오류 : java.lang.Exception : 별명이 없습니다.
답변
모든 세부 정보를 얻으려면 romaintaz 답변에 -v 옵션을 추가해야했습니다.
keytool -v -list -keystore <FileName>.keystore
답변
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 이것이 당신이 찾고있는 것입니다 바랍니다!
답변
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"