Man ir ķekars .keystore failus un ir nepieciešams atrast vienu ar īpašu CN un alias. Vai ir veids, kā to izdarīt ar keytool, jarsigner vai kādu citu rīku? Es atradu veidu, kā pārbaudīt, vai konkrēts keystore tika izmantots, lai parakstītu konkrētu apk, bet man ir nepieciešams arī iegūt alias un sertifikāta nosaukumu katrā failā.
Varat palaist šādu komandu, lai uzskaitītu atslēgu krātuves faila saturu (un aizstājvārdu nosaukumu):
keytool -v -list -keystore .keystore
Ja meklējat konkrētu aizstājvārdu, komandā varat norādīt arī to:
keytool -list -keystore .keystore -alias foo
Ja aizstājvārds nav atrasts, tiks parādīts izņēmums:
keytool error: java.lang.Exception:
neeksistē.
Varat palaist no Java koda.
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();
}
}
Sertifikātu klasē ir visa informācija par atslēgu krātuvi.
ATJAUNINĀT - IEGŪT PRIVĀTO ATSLĒGU
Key key = keyStore.getKey(alias, password.toCharArray());
String encodedKey = new Base64Encoder().encode(key.getEncoded());
System.out.println("key ? " + encodedKey);
@prateek Ceru, ka tas ir tas, ko jūs meklējat!