diferencia entre OpenSSL y keytool

13

Me preguntaba acerca de las diferencias entre usar OpenSSl o Keytool y generar certificados por ellos. Creo que Keytool es usado por la comunidad de Java pero para alguien que no está conectado remotamente a Java usa OpenSSL para generar cosas. Me refiero a clave pública, clave privada y certificados.

Supongo que con OpenSSL tienes que generar claves y certificados individualmente, pero keytool puede generar un almacén de claves que te dará una especie de maletín que puede contener claves + certificados.

La pregunta es: ¿es correcto o no lo que creo?

Si importa, uso windows. Y me refiero a: ¿Cómo uso OpenSSL con el Java Keytool?

    
pregunta Sachin Verma 01.09.2015 - 12:29
fuente

3 respuestas

23

En resumen, ambas son herramientas de generación de claves criptográficas, pero keytool tiene la característica adicional de manipular el formato de archivo de almacenamiento de claves preferido de Java, el KeyStore.

Java prefiere trabajar con claves y certificados que se almacenan en un KeyStore (también llamado TrustStore cuando solo tiene certificados). Es posible , pero no trivial, hacer que Java funcione con archivos PEM / CER / CRT / PKCS / etc sencillos, así que para todos los propósitos y propósitos, si está codificando criptografía en Java, está vamos a usar un KeyStore.

Keytool es una herramienta que viene con Java que funciona con KeyStores - puede cree KeyStores y manipule claves y certificados dentro de ellos. También puede crear claves y firmar certificados . Por lo tanto, es tanto una generación de claves como una herramienta de administración de archivos de KeyStore.

OpenSSL funciona con formatos estándar (PEM / CER / CRT / PKCS / etc) pero no manipula archivos de KeyStore. Es posible generar una clave y / o certificado con OpenSSL, y luego importar esa clave / cert en un KeyStore usando keytool , pero no puede poner la clave / cert en el KeyStore directamente usando OpenSSL.

(OpenSSL también tiene una gama más amplia de funcionalidades que keytool: realiza el cifrado simétrico, actúa como un servidor y cliente de red SSL, maneja más formatos. Simplemente no es así que hablamos KeyStore).

    
respondido por el gowenfawr 01.09.2015 - 13:57
fuente
4

Tanto OpenSSL como keytool tienen el mismo propósito: generar / almacenar claves y certificados (cadenas). La cuestión es que Java solo puede trabajar con certificados / claves contenidas en su almacén de claves (JKS). Esos certificados y claves se generan utilizando la biblioteca keytool, no utilizando openssl.

Como ha señalado correctamente, keytool siempre necesitará un almacén de claves para almacenar los certificados y las claves que ha generado, donde este no es el caso de openssl. Tenga en cuenta que OpenSSL también se puede utilizar para crear un contenedor similar, a saber, PKCS12 (.p12). Este es un contenedor protegido por contraseña que contiene claves y certificados (al igual que el almacén de claves de Java). Sin embargo, no es compatible con Java ... Necesitaría convertir el contenedor .p12 a .jks antes de que su aplicación Java pueda trabajar en los certificados.

    
respondido por el Stef Heylen 01.09.2015 - 13:53
fuente
0

( Los comandos más comunes del almacén de claves Java Keytool )

  

Tiendas Java Keytool   las claves y certificados en lo que se llama un almacén de claves . Por defecto el   Java keystore se implementa como un archivo. Protege las claves privadas con   una contraseña.

Mientras OpenSSL genera primero clave privada RSA (clave RSA de 1024 bits que se cifra mediante 3DES y se almacena en formato PEM para que pueda leerse como texto ASCII). Después de eso , se crea el certificado ( CSR )

    
respondido por el user45139 01.09.2015 - 12:58
fuente

Lea otras preguntas en las etiquetas