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>
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.