web-dev-qa-db-fra.com

Différence entre OpenSSL et keytool

Je me posais des questions sur les différences entre l'utilisation d'OpenSSl ou de Keytool et la génération de certificats par eux. Je pense que Keytool est utilisé par Java communauté mais pour quelqu'un qui n'est pas connecté à distance à Java utilise OpenSSL pour générer des trucs. Je veux dire clé publique, clé privée et certificats.

Je suppose qu'en utilisant OpenSSL, vous devez générer des clés et des certificats individuellement mais keytool peut générer un magasin de clés qui vous donnera une sorte de porte-documents qui peut contenir des clés + certificats.

La question est: ce que je pense est-il correct ou non?

Si c'est important, j'utilise des fenêtres. Et je fais référence à: Comment utiliser OpenSSL avec le Java Keytool?

15
Sachin Verma

En bref, ce sont deux outils de génération de clés de chiffrement, mais keytool a la fonctionnalité supplémentaire de manipuler le format de fichier de stockage de clés préféré de Java, le KeyStore.

Java préfère fortement travailler avec des clés et des certificats qui sont stockés dans un KeyStore (également appelé TrustStore quand il ne contient que des certificats). Il est possible, mais pas trivial, d'obtenir Java pour travailler avec des fichiers PEM/CER/CRT/PKCS/etc simples, donc à toutes fins utiles) si vous codez la crypto en Java vous allez utiliser un KeyStore.

Keytool est un outil fourni avec Java qui fonctionne avec KeyStores - il peut créer des KeyStores et manipuler des clés et des certificats à l'intérieur. Il peut également créer des clés et signer les certificats . Il s'agit donc à la fois d'une génération de clés et d'un outil d'administration de fichiers KeyStore.

OpenSSL fonctionne avec des formats standard (PEM/CER/CRT/PKCS/etc) mais ne manipule pas les fichiers KeyStore. Il est possible de générer une clé et/ou un certificat avec OpenSSL, puis importer cette clé/certificat dans un magasin de clés à l'aide de keytool , mais vous ne pouvez pas mettre la clé/certificat dans le magasin de clés directement à l'aide d'OpenSSL .

(OpenSSL a également un éventail de fonctionnalités plus large que keytool - effectuant un cryptage symétrique, agissant en tant que client et serveur de réseau SSL, gérant plus de formats. Il n'est tout simplement pas possible de parler KeyStore.)

25
gowenfawr

OpenSSL et keytool ont le même objectif: générer/stocker des clés et des certificats (chaînes). Le fait est que Java ne peut fonctionner qu'avec les certificats/clés contenus dans son magasin de clés (JKS). Ces certificats et clés sont générés en utilisant la bibliothèque keytool, pas en utilisant openssl.

Comme vous l'avez souligné à juste titre, keytool aura toujours besoin d'un magasin de clés pour stocker les certificats et les clés qu'il a générés, ce qui n'est pas le cas pour openssl. Notez que OpenSSL peut également être utilisé pour créer un conteneur similaire, à savoir PKCS12 (.p12). Il s'agit d'un conteneur protégé par mot de passe contenant des clés et des certificats (tout comme le magasin de clés de Java). Cependant, il n'est pas compatible avec Java ... Vous devez convertir le conteneur .p12 en .jks avant que votre application Java puisse travailler sur les certificats.

4
Stef Heylen

( Les plus courants Java Commandes Keytool Keystore )

Java Keytool stocke les clés et les certificats dans ce qu'on appelle un magasin de clés . Par défaut, le magasin de clés Java est implémenté sous forme de fichier. Il protège les clés privées avec un mot de passe.

Alors qu'OpenSSL génère d'abord la clé privée RSA (clé RSA 1024 bits qui est chiffrée à l'aide de 3DES et stockée au format PEM afin qu'elle soit lisible comme ASCII texte). Après cela , le certificat ( CSR ) est créé

0
user45139