In breve, sono entrambi strumenti di generazione di chiavi crittografiche, ma keytool ha la caratteristica aggiuntiva di manipolare il formato di file di memorizzazione delle chiavi preferito di Java, il KeyStore.
Java preferisce strongmente lavorare con chiavi e certificati che sono memorizzati in un KeyStore (chiamato anche TrustStore quando ha solo certificati). È possibile , ma non banale, per far funzionare Java con semplici file PEM / CER / CRT / PKCS / etc, quindi a tutti gli effetti se stai codificando cripto in Java sei intenzione di utilizzare un KeyStore.
Keytool è uno strumento fornito con Java che funziona con KeyStores - può crea KeyStores e manipola chiavi e certificati al loro interno. Può anche creare le chiavi e firmare i certificati . Quindi è sia una generazione di chiavi che uno strumento di amministrazione di file di KeyStore.
OpenSSL funziona con formati standard (PEM / CER / CRT / PKCS / etc) ma non manipola i file KeyStore. È possibile generare una chiave e / o un certificato con OpenSSL e quindi importare quella chiave / cert in un KeyStore utilizzando keytool , ma non è possibile inserire la chiave / cert nel KeyStore direttamente usando OpenSSL.
(OpenSSL ha anche una gamma più ampia di funzionalità rispetto a keytool: esegue la crittografia simmetrica, agisce come client e server di rete SSL, gestisce più formati. Semplicemente non parla KeyStore.)