Sto tentando di accedere al mio archivio di portachiavi personale MacOS X per recuperare chiavi private specifiche per crittografare e firmare alcuni dati utilizzando Java. Le parti di crittografia e firma sono funzionali, ma non riesco a recuperare le chiavi private che desidero. Quanto segue è un codice che ho scritto di presentare il problema che ho:Ottieni chiave privata dal keystore MacOS X utilizzando Java
KeyStore myKeyStore;
myKeyStore = KeyStore.getInstance("KeychainStore", "Apple");
myKeyStore.load(null, null);
// Get all the aliases in a list (I thought that calling the KeyStore
// methods during the iteration was the reason why getKey wasn't responding properly!)
// ... it wasn't actually!
ArrayList<String> aliases = new ArrayList<String>();
Enumeration<String> e = myKeyStore.aliases();
while (e.hasMoreElements()) {
aliases.add(e.nextElement());
}
for (String alias : aliases) {
try {
// I read on the Internet that any ASCII password is required
// to get the getKey method working.
Key k = myKeyStore.getKey(alias, "TEST".toCharArray());
if (k == null) {
System.out.println(alias + ": <null> (cannot retrieve the key)");
} else {
System.out.println(alias + ":");
System.out.println(k);
}
} catch (Exception ex) {
System.out.println(alias + ": " + ex.getMessage());
}
}
Dopo l'esecuzione quel pezzo di codice, ho potuto vedere tutti i certificati nel mio archivio chiavi personali. Tuttavia, posso recuperare solo una chiave privata, anche se ce ne sono un sacco nel keystore. (L'uscita del codice appena mostra più certificati attendibili + una chiave privata solo)
E quando rimuovo la chiave privata dall'archivio di chiavi ed eseguire il codice di nuovo, un'altra chiave privata viene restituito, mentre tutti gli altri rimangono inaccessibili. Importando nuovamente la chiave privata nel keystore ed eseguendo il codice un'ultima volta, questa viene restituita da Java e l'ultima chiave privata precedentemente restituita diventa inaccessibile.
Mi sono imbattuto in una mailing list su questo argomento: http://lists.apple.com/archives/java-dev/2007/aug/msg00134.html. Sfortunatamente, non sembra che il problema sia stato risolto e non riesco a contattare le persone coinvolte (nessun indirizzo e-mail).
Qualcuno ha provato a recuperare più chiavi private dall'archivio portachiavi MacOS e ci è riuscito?
La mia configurazione:
- MacOS X 10.6
- Jva JRE 1.6.0_15 (32 e 64 bit)
- Safari 4.0.3
- Firefox 3.6.3
Grazie in anticipo,
Hai provato a utilizzare il keytool dalla riga di comando? se funzionerà, potrebbe essere una soluzione al tuo problema. L'ho usato in passato e ha funzionato per me ... –