Saltar al contenido

Cómo almacenar y cargar keys usando la clase java.security.KeyStore

Recabamos en distintos espacios para así mostrarte la respuesta a tu duda, si continúas con inquietudes puedes dejar la inquietud y te respondemos porque estamos para ayudarte.

Solución:

Almacenamiento:

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

Tenga en cuenta que certChain podría ser nulla menos que estés de paso PrivateKey

Cargando:

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

Leer los javadocs

EDITAR:

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

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

Tuve una situación en la que no sabía el key alias, pero sabía que solo había uno key estaba allí en el almacén de claves. Usé el siguiente código para cargar el key (después de cargar el almacén de claves como se muestra arriba):

Enumeration 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 un post en mi blog con detalles de como cargar la privada keypublico key y cómo usarlos.

Comentarios y calificaciones del tutorial

Si conservas algún recelo y disposición de aclarar nuestro tutorial te proponemos añadir una crítica y con gusto lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *