[java] 키 저장소 파일에서 인증서 이름 및 별명을 확인하는 방법은 무엇입니까?

많은 .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"


답변