Keytool es una utilidad de línea de comandos que le permite gestionar/almacenar claves criptográficas y certificados.

Si su sistema tiene Java instalado, puede utilizar el comando keytool para importar un certificado CA, listar certificados, crear certificados autofirmados, almacenar frases de contraseña y claves públicas/privadas, y hacer muchas cosas más.

¿Está confuso? No se preocupe; se lo explicaré en términos más sencillos a medida que vaya leyendo.

Tenga en cuenta que utilizo Linux para probar los comandos y explicárselo un poco más con ejemplos.

También puede utilizar los comandos Keytool en Windows y macOS.

¿Qué es un comando Keytool?

Es una utilidad de gestión de claves y certificados. Le permite almacenar pares de claves privadas/públicas, que suelen utilizarse para verificar/autenticar el acceso a servicios.

Teniendo en cuenta el título de este artículo, se puede suponer que el comando es utilizado principalmente por administradores de sistemas y desarrolladores.

En su mayor parte, sí, pero un usuario puede ser creativo con el comando keytool para almacenar frases de contraseña y claves secretas con fines de autenticación, cifrado y descifrado. Así que, si siente curiosidad, debería probarlo en su sistema.

Si es nuevo en el concepto de claves criptográficas, puede que desee consultar nuestro artículo sobre cifrado de datos antes de probar los comandos keytool.

Además, echar un vistazo a los ejemplos de comandos de OpenSSL también puede darle una idea de sus diferencias y de lo que puede hacer con cualquiera de ellos.

Crear un certificado autofirmado

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass&gt

A diferencia de un certificado SSL que usted compra, un certificado autofirmado sólo se utiliza con fines de desarrollo/prueba para utilizar una conexión segura.

Puede generar uno utilizando la sintaxis del comando keytool mencionada anteriormente. Por ejemplo, este es el aspecto que tiene

keytool -genkeypair -alias geekflare -keypass passforkeystore -validity 365 -storepass passforkeystore

Puede utilizar cualquier nombre para el alias; yo utilizo geekflare como texto marcador de posición. Puede personalizar la validez y especificar una contraseña para el almacén de claves sustituyendo«passforkeystore» en el comando anterior.

Tenga en cuenta que sólo se admite una contraseña para los almacenes de claves PKCS12. Sin embargo, es un tipo de almacén de claves conveniente que no es específico de Java.

Si necesita dos contraseñas diferentes para su almacén de claves y el certificado, quizá desee indicar explícitamente al comando keytool que utilice otra interfaz.

Puede leer más al respecto en su documentación oficial.

Una vez que proceda a la creación, le pedirá detalles adicionales para la autenticidad. Esto es lo que debería parecer

¿Cuál es su nombre y apellidos?
  [Desconocido]:  Ankush
¿Cuál es el nombre de su unidad organizativa?
  [Desconocido]:  Geekflare
¿Cuál es el nombre de su organización?
  [Desconocido]:  Geekflare
¿Cuál es el nombre de su ciudad o localidad?
  [Desconocido]:  Bhubaneswar
¿Cuál es el nombre de su Estado o Provincia?
  [Desconocido]:  Odisha
¿Cuál es el código de país de dos letras de esta unidad?
  [Desconocido]: 91
¿Es CN=Ankush, OU=Geekflare, O=Geekflare, L=Bhubaneswar, ST=Odisha, C=91 correcto?
  [sí

Cree un almacén de claves Java y un par de claves

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650

Generar un almacén de claves Java e importar un certificado

Asegúrese de que dispone de un certificado válido o de que ha generado uno anteriormente; una vez hecho esto, puede importarlo y generar un almacén de claves Java.

keytool -importcert -file test.crt -keystore truststore.jks -alias geekflare

Generar un par de claves para el almacén de claves predeterminado con asunto

Puede generar rápidamente un par de claves (digamos con el nombre «ca») utilizando el siguiente comando:

keytool -alias ca -nombre CN=CA -genkeypair

Crear una cadena de certificados firmados

Supongamos que ha creado los pares de claves ca, y ca1. Puede crear una cadena de certificados firmados en la que ca firmará a ca1 con los siguientes comandos:

keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert

Puede completar la cadena con otros dos pares de claves ca1 y ca2, donde ca1 firmará ca2.

Importar un certificado

Si desea importar un certificado desde un archivo disponible, esto es lo que puede hacer:

keystool -import -alias geekflare -file geekflareserver.cer

Crear una solicitud de firma de certificado (CSR) para el almacén de claves existente

Teniendo en cuenta que ya ha creado un almacén de claves, puede generar una CSR.

keytool -certreq -keyalg rsa -keystore keystore.jks -alias servidor -archivo geekflare.csr

Lista de certificados almacenados en el almacén de claves de Java

Un almacén de claves puede tener varias entradas de certificados. Suponiendo que estamos comprobando la lista de certificados en la base de datos«keystore.jks», esto es lo que tenemos que teclear

keytool -v -list -keystore keystore.jks

La salida para esto tendrá el siguiente aspecto

keytool -v -list -keystore keystore.jks
Introduzca la contraseña del almacén de claves:  
Tipo de almacén de claves: PKCS12
Proveedor del almacén de claves: SUN

Su almacén de claves contiene 2 entradas

Nombre alias: geekflarecert
Fecha de creación: 16-Nov-2022
Tipo de entrada: PrivateKeyEntry
Longitud de la cadena del certificado: 1
Certificado[1]:
Propietario: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Emisor: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Número de serie: a0b9a99
Válido desde: Wed Nov 16 09:42:37 IST 2022 hasta: Sat Nov 13 09:42:37 IST 2032
Huellas digitales del certificado
	 SHA1: 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE
	 SHA256: C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F
Nombre del algoritmo de firma: SHA256withRSA
Algoritmo de clave pública del sujeto: clave RSA de 2048 bits
Versión: 3

Comprobar el contenido de un único certificado

Teniendo en cuenta que ya dispone de un certificado generado, puede comprobar más información sobre el mismo utilizando lo siguiente:

keytool -v -printcert -file servidor.crt

Ver los certificados de un almacén de claves Java

Puede listar todos los certificados de una base de datos de almacenes de claves. Este es el aspecto del comando

keytool -v -list -almacén de claves keystore.jks

Ver el almacén de claves utilizando un alias y un almacén de claves

Si desea comprobar un almacén de claves utilizando el nombre de alias que estableció al crearlo, escriba lo siguiente:

keytool -v -list -almacén de claves keystore.jks -alias geekflareserver

Listar certificados en el almacén de claves

Si desea comprobar los certificados almacenados en el almacén de claves por defecto, utilice el comando

keytool -list -storepass passforkeystore

Debe sustituir«passforkeystore» por la contraseña que haya establecido.

Ver la información del certificado

Si necesita comprobar los detalles de un solo certificado, puede utilizar su alias sin especificar la base de datos keystone.

Este es el aspecto que tiene

keytool -list -v -alias geekflare -storepass passforkeystore

Ver certificado en formato PEM

PEM es uno de los formatos más comunes para certificados y claves criptográficas. Si desea comprobar un certificado con PEM, escriba lo siguiente:

keytool -v -printcert -file geekflare.crt -rfc

Cambiar la contraseña de un almacén de claves Java

Si ya ha creado una contraseña para el almacén de claves de Java, puede cambiarla con el comando

keytool -delete -alias geekflare -keystore keystore.jks

Eliminar un certificado del almacén de claves de Java

Puede especificar el almacén de claves de Java y su alias para eliminarlo. Por ejemplo

keytool -delete -alias geekflare -keystore keystore.jks

Explore el comando y obtenga ayuda

El comando tiene varios argumentos y extensiones para hacer muchas cosas. Dependiendo de su caso de uso, puede que necesite o no utilizarlos todos.

Así que, si quiere profundizar en las opciones del comando, siempre puede teclear

keytool -help

En cualquier caso, si está utilizando un terminal Linux, le recomendaría leer la página man (manual) de este comando:

man keytool

Con el comando man, puede obtener todos los detalles que necesite sobre el comando keytool.

Así que, ¡siga siendo su superpoder para aprender todo lo que pueda sobre él!

Recapitulando

La ruta de los archivos y otras opciones de personalización pueden ser un poco diferentes según la plataforma que utilice. También puede consultar la documentación de Oracle para conocer las opciones estandarizadas.

Keytool es una herramienta excelente para una serie de tareas. Pruébela y vea lo que puede hacer con ella

También puede explorar algunos comandos de Linux para mantener y conservar los sistemas funcionando de forma óptima.