2010-06-12 15 views

Respuesta

21

almacenamiento:

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 podría ser nula, a menos que usted está pasando PrivateKey

Carga:

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

Leer el EDITAR javadocs

:

Tenga en cuenta que si está almacenando un SecretKey o está utilizando alguna parte del proveedor de SunJCE (Java Cryptography Extension), deberá configurar el tipo de KeyStore en JCEKS.

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

lo agradecería si se le explica cómo puedo usar esto con mi solicitud SSL/TLS (SSLServerSocketFactory) que necesito para darle la trayectoria de un certificado de CA

3

tuve una situación en la que yo no No sé el nombre del alias clave, pero sabía que solo había una clave en el almacén de claves. He utilizado el código siguiente para cargar la clave (después de cargar el almacén de claves como se muestra arriba):

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

he añadido una post on my blog con detalles de cómo cargar la clave privada, clave pública y la forma de utilizarlos.

Cuestiones relacionadas