664 Stimmen

Wie prüft man Zertifikatsname und Alias in Keystore-Dateien?

Ich habe eine Reihe von .keystore-Dateien und muss eine mit einem bestimmten 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, zu prü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 erhalten.

1226voto

Romain Linsolas Punkte 76507

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 ihn auch im Befehl angeben:

keytool -list -keystore .keystore -alias foo

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

keytool Fehler: java.lang.Exception: Alias existiert nicht

318voto

enkara Punkte 5889

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

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

85voto

Renjith Punkte 3297

Sie können von Java-Code aus starten.

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 über den Keystore.

AKTUALISIEREN - PRIVATEN SCHLÜSSEL ABRUFEN

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

@prateek Hoffentlich ist es das, was Sie suchen!

66voto

Ycnannamela Punkte 649

Schlüsselspeicher-Explorer visuelles Open-Source-Tool zur Verwaltung von Keystores.

29voto

Svetoslav Punkte 553

In einer bashähnlichen Umgebung können Sie verwenden:

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

Dieser Befehl besteht aus 3 Teilen. Wie oben erwähnt, ist der 1. Teil werden alle vertrauenswürdigen Zertifikate mit allen Details aufgelistet, weshalb die 2. Teil kommt, um nur die Alias-Informationen unter diesen Details zu filtern. Und schließlich in der 3. Teil können Sie nach einem bestimmten Alias (oder einem Teil davon) suchen. Die -i schaltet den Modus zur Unterscheidung von Groß- und Kleinschreibung ein. Der angegebene Befehl liefert also alle Aliase, die das Muster "foo" enthalten, z. B. foo, 123_FOO, fooBar usw. Für weitere Informationen man grep .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X