it-swarm.com.de

Wie überprüfe ich den Zertifikatsnamen und den Alias ​​in Keystore-Dateien?

Ich habe eine Reihe von .keystore-Dateien und muss eine mit spezifischem CN und Alias ​​finden. Gibt es eine Möglichkeit, dies mit Keytool, Jarsigner oder einem anderen Tool zu tun? Ich habe eine Möglichkeit gefunden, um zu überprüfen, ob ein bestimmter Keystore zum Signieren einer bestimmten Apk verwendet wurde, aber ich muss auch den Alias ​​und den Zertifikatsnamen in jeder der Dateien abrufen.

367
Malthan

Sie können den folgenden Befehl ausführen, um den Inhalt Ihrer Keystore-Datei (und den Aliasnamen) aufzulisten:

keytool -v -list -keystore .keystore

Wenn Sie nach einem bestimmten Alias ​​suchen, können Sie diesen auch im Befehl angeben:

keytool -list -keystore .keystore -alias foo

Wenn der Alias ​​nicht gefunden wird, wird eine Ausnahme angezeigt:

keytool error: Java.lang.Exception: Alias ​​existiert nicht

622
Romain Linsolas

Um alle Details zu erhalten, musste ich die Option -v zu romaintaz hinzufügen. Antwort:

keytool -v -list -keystore <FileName>.keystore
247
enkara

Sie können von Java Code ausführen.

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();
            }
    }

Die Zertifikatsklasse enthält alle Informationen zum Schlüsselspeicher.

AKTUALISIEREN - PRIVATEN SCHLÜSSEL ERHALTEN

Key key = keyStore.getKey(alias, password.toCharArray());
String encodedKey = new Base64Encoder().encode(key.getEncoded());
System.out.println("key ? " + encodedKey);

@prateek Hoffe, das ist was du suchst!

61
Renjith

KeyStore Explorer Open Source Visual Tool zur Verwaltung von Keystores.

56
Ycnannamela

In einer bashartigen Umgebung können Sie Folgendes verwenden:

keytool -list -v -keystore cacerts.jks | grep 'Alias name:' | grep -i foo

Dieser Befehl besteht aus 3 Teilen. Wie oben angegeben, listet der Teil 1st alle vertrauenswürdigen Zertifikate mit allen Details auf, und aus diesem Grund filtert der Teil 2nd nur die Alias-Informationen unter diesen Details. Und schließlich können Sie im . Teil nach einem bestimmten Alias ​​(oder einem Teil davon) suchen. Das - i schaltet den case insensitiven Modus ein. Somit liefert der gegebene Befehl alle Aliase, die das Muster 'foo' enthalten, z. foo, 123_FOO, fooBar usw. Weitere Informationen man grep.

16
Svetoslav

Dies listet alle Zertifikate auf:

keytool -list -keystore "$Java_HOME/jre/lib/security/cacerts"
9
Walk