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