2010-06-12 14 views

risposta

21

Conservazione:

KeyStore ks = KeyStore.getInstance("JKS"); 
ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain); 
OutputStream writeStream = new FileOutputStream(filePathToStore); 
ks.store(writeStream, keystorePasswordCharArray); 
writeStream.close(); 

Nota Thet certChain potrebbe essere nullo, a meno che non si sta passando PrivateKey

Caricamento:

KeyStore ks = KeyStore.getInstance("JKS"); 
InputStream readStream = new FileInputStream(filePathToStore); 
ks.load(readStream, keystorePasswordCharArray); 
Key key = ks.getKey("keyAlias", passwordForKeyCharArray); 
readStream.close(); 

Leggi l'EDIT javadocs

:

Si noti che se si memorizza una SecretKey o si utilizza qualsiasi parte del provider SunJCE (Java Cryptography Extension), sarà necessario impostare il tipo di KeyStore su JCEKS.

KeyStore ks = KeyStore.getInstance("JCEKS"); 

sarei grato se spiegate come posso usare questo con il mio SSL/TLS applicazione (sslserversocketfactory) ho bisogno di dargli il percorso di un certificato CA

3

Ho avuto una situazione in cui ho didn Conosco il nome dell'alias chiave, ma sapevo che c'era una sola chiave nel keystore. Ho usato il seguente codice per caricare la chiave (dopo aver caricato l'archivio di chiavi come indicato sopra):

Enumeration<String> aliases = keyStore.aliases(); 
String alias = aliases.nextElement(); 
KeyStore.PrivateKeyEntry keyEnt = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, 
        new KeyStore.PasswordProtection(keystorePass.toCharArray())); 
PrivateKey privateKey = keyEnt.getPrivateKey(); 

Ho aggiunto un post on my blog con dettagli su come caricare la chiave privata, la chiave pubblica e come usarli.

Problemi correlati