2010-06-12 7 views

Antwort

21

Speichern:

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

Hinweis Thet certChain könnte null sein, es sei denn, Sie PrivateKey

Laden sind vorbei:

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

Lesen Sie die javadocs

EDIT:

Beachten Sie, dass Sie, wenn Sie einen SecretKey speichern oder einen Teil des SunJCE-Providers (Java Cryptography Extension) verwenden, Ihren KeyStore-Typ auf JCEKS einstellen müssen.

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

Ich würde schätzen, wenn Sie erklären, wie ich das mit meiner ssl/tls Anwendung verwenden können (sslserversocketfactory) i sie den Weg eines CA-Zertifikat geben müssen

3

Ich hatte eine Situation, wo ich didn Ich kenne den Schlüsselaliasnamen nicht, aber ich wusste, dass nur ein Schlüssel im Schlüsselspeicher vorhanden war. Ich habe den folgenden Code den Schlüssel zu laden (nach dem Schlüsselspeicher geladen, wie oben dargestellt):

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(); 

Ich habe eine post on my blog mit Details, wie hinzugefügt, um den privaten Schlüssel, den öffentlichen Schlüssel zu laden und wie sie verwendet werden.

Verwandte Themen