키스토어 파일에서 인증서 이름과 별칭을 확인하는 방법
.keystore 파일이 너무 많아서 CN과 에일리어스가 특정된 파일을 찾아야 합니다.키툴, jarsigner 또는 다른 도구로 할 수 있는 방법이 있나요?특정 apk에 서명하기 위해 특정 키스토어가 사용되었는지 확인하는 방법을 찾았지만 각 파일에 에일리어스와 증명서 이름도 입력해야 합니다.
다음 명령을 실행하여 키스토어 파일(및 에일리어스 이름)의 내용을 나열할 수 있습니다.
keytool -v -list -keystore .keystore
특정 에일리어스를 찾고 있는 경우는, 다음의 커맨드로 지정할 수도 있습니다.
keytool -list -keystore .keystore -alias foo
에일리어스가 발견되지 않으면 예외가 표시됩니다.
keytool 오류: java.displays.예외:별칭이 없습니다.
모든 세부 정보를 얻기 위해 로멘타즈 답변에 -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
이 명령어는 3개의 부분으로 구성됩니다.위에서 설명한 바와 같이 첫 번째 부분에서는 신뢰할 수 있는 모든 증명서가 모든 세부 정보와 함께 나열되므로 두 번째 부분에서는 이러한 세부 정보 중 에일리어스 정보만 필터링합니다.마지막으로 3부에서는 특정 에일리어스(또는 그 일부)를 검색할 수 있습니다.i 는 대소문자를 구분하지 않는 모드를 on으로 합니다.따라서 지정된 명령어는 패턴 'foo', 즉 foo, 123_FOO, fooBar 등을 포함하는 모든 에일리어스를 생성합니다.자세한 정보는man grep
.
모든 증명서가 표시됩니다.
keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"
Windows 의 경우:
keytool - v - list - keystore my_keystore | findstr my_string
레퍼런스:
cmd:
keytool -list -keystore 'keystoreName'
그런 다음 Enter 키를 누르면 cmd가 키스토어 비밀번호를 입력하라는 메시지를 표시합니다.
cmd는 입력하는 동안 화면에 암호가 표시되지 않으므로 올바른 암호를 입력하고 주의한 다음 Enter 키를 다시 누르십시오.
또는 다음을 사용할 수 있습니다.
keytool -list -keystore 'keystoreName' -storepass 'type your keystore passwd'
Keys의 전체 정보를 보려면 -v:를 추가합니다.
keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'
경고 메시지가 뜨면
Warning: use -cacerts option to access cacerts keystore
이 명령어를 사용할 수 있습니다.
.\keytool.exe -list -cacerts
또한 콘솔 증명서 매니저는 단일 파일셸 스크립트(오픈소스)로 작성됩니다.
https://dev.to/sfkulyk/writing-panel-manager-for-certificate-keystore-in-linux-shell-187b
키 저장소를 참조, 복사, 삭제, 이름 변경 및 비교할 수 있습니다.
keytool - v - list - certs - certs 1
이 기능은 에일리어스 이름으로 jdk-11에 추가된 증명서를 확인하고 Windows 머신에 추가되었는지 여부를 확인할 때 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/12893995/how-to-check-certificate-name-and-alias-in-keystore-files
'programing' 카테고리의 다른 글
#ifdef에 'or' 조건을 추가하는 방법 (0) | 2022.08.28 |
---|---|
자바에서의 다운캐스트 (0) | 2022.08.28 |
문자열이 Java에서 정수를 나타내는지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2022.08.28 |
JVM에서 사용하도록 프록시를 설정하려면 어떻게 해야 합니까? (0) | 2022.08.28 |
지시문에 데이터를 전달하시겠습니까? (0) | 2022.08.28 |