web-dev-qa-db-fra.com

Comment crypter en utilisant un fichier de clé privée généré par OpenSSL?

Lorsque j'utilise openssl genrsa -out yourdomain.key 2048 commande pour générer une clé. Je comprends que le fichier yourdomain.key contient à la fois les clés privées et publiques. Mais lorsque je vérifie le contenu de ce fichier clé, il commence et se termine par -----BEGIN PRIVATE KEY----- et -----END PRIVATE KEY-----, ce qui donne l'impression que ce fichier n'est que la clé privée. Pourquoi donc? Cela me rend très confus.

Si je veux crypter un message à l'aide d'une clé privée, dois-je appliquer l'intégralité de yourdomain.key clé? Ou devrais-je en extraire la partie clé privée et l'utiliser?

8
Zhen

N'utilisez pas la ligne de commande OpenSSL pour chiffrer ou signer quoi que ce soit. La ligne de commande OpenSSL est un outil de débogage. Pour crypter ou signer un message, utilisez un outil conçu à cet effet, tel que GPG .

Un fichier de clé privée contient toutes les informations nécessaires à la construction de la clé publique. Si vous avez une clé privée dans un format que OpenSSL comprend et que vous souhaitez obtenir la clé publique correspondante, vous pouvez utiliser openssl pkey -pubout …. Mais ce n'est pas le format dont GPG a besoin. GPG génère ses propres clés.

La clé privée est utilisée pour déchiffrer et signer des choses. Vous ne l'utilisez pas pour crypter. Vous utilisez la clé publique pour cela. Mais openssl genrsa ne générera pas la clé publique, seulement la clé privée. Pour crypter les choses, vous devez d'abord générer la clé publique (vous avez donc une paire de clés: privée et publique):

openssl rsa -in yourdomain.key -outform PEM -pubout -out public.pem

Cela va créer public.pem fichier avec, eh bien, la clé publique. Utilisez-le pour écrire le fichier:

openssl rsautl -encrypt -inkey public.pem  -pubin -in file.txt -out file.enc

Pour déchiffrer plus tard, vous utilisez la clé privée:

openssl rsautl -decrypt -inkey yourdomain.key -in file.enc  -out file.dec
11
ThoriumBR