Differenza tra OpenSSL e keytool

14

Mi stavo chiedendo delle differenze tra l'utilizzo di OpenSSl o Keytool e la generazione di certificati da parte loro. Penso che Keytool sia usato dalla comunità Java, ma per qualcuno che non è connesso in remoto a Java usa OpenSSL per generare roba. Intendo chiave pubblica, chiave privata e certificati.

Presumo che usando OpenSSL sia necessario generare chiavi e certificati singolarmente, ma keytool può generare un keystore che ti darà una sorta di valigetta che può contenere chiavi + certificati.

La domanda è: è ciò che ritengo corretto o no?

Se è importante, io uso Windows. E mi riferisco a: Come utilizzare OpenSSL con Java Keytool?

    
posta Sachin Verma 01.09.2015 - 12:29
fonte

3 risposte

24

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

    
risposta data 01.09.2015 - 13:57
fonte
4

Sia OpenSSL che keytool hanno lo stesso scopo: generare / memorizzare chiavi e certificati (ca). Il fatto è che Java può funzionare solo con certificati / chiavi contenute nel suo keystore (JKS). Questi certificati e chiavi sono generati usando la libreria keytool, non usando openssl.

Come hai giustamente sottolineato, keytool avrà sempre bisogno di un keystore per memorizzare i certificati e le chiavi che ha generato, laddove non è il caso di openssl. Si noti che OpenSSL può essere utilizzato anche per creare un contenitore simile, ovvero PKCS12 (.p12). Questo è un contenitore protetto da password contenente chiavi e certificati (proprio come il keystore di Java). Tuttavia, non è compatibile con Java ... Dovresti convertire il contenitore .p12 in .jks prima che l'applicazione Java possa lavorare sui certificati.

    
risposta data 01.09.2015 - 13:53
fonte
0

( I comandi più comuni KeyTool Java Keystore )

Java Keytool stores the keys and certificates in what is called a keystore. By default the Java keystore is implemented as a file. It protects private keys with a password.

Mentre OpenSSL genera la prima chiave privata RSA (chiave RSA a 1024 bit che viene crittografata usando 3DES e archiviata in un formato PEM in modo che sia leggibile come testo ASCII). Dopo questo , viene creato il certificato ( CSR )

    
risposta data 01.09.2015 - 12:58
fonte

Leggi altre domande sui tag