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.
Antworten
Zu viele Anzeigen?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
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!
Schlüsselspeicher-Explorer visuelles Open-Source-Tool zur Verwaltung von Keystores.
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
.
- See previous answers
- Weitere Antworten anzeigen