web-dev-qa-db-fra.com

OpenSSL incapable de charger la clé publique

Essayer de chiffrer un message texte via une ligne de commande sous OSX Yosomite 10.10.2

La clé publique .pem créée ressemble à ceci:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -t PKCS8 > id_rsa.pem

Si j'essaie de chiffrer myMessage.txt

openssl rsautl -encrypt -inkey ~/.ssh/id_rsa.pem -pubin -in ~/Desktop/myMessage.txt -out ~/Desktop/encrypted.txt

Je reçois unable to load Public key

Si je tape alors:

openssl asn1parse -in id_rsa.pem

Retours: Error: offset too large

Mais je ne sais pas comment le réparer. Que devrais-je changer pour que cela fonctionne?

8
caramba

Je ne sais toujours pas ce qui ne va pas dans ma question, mais j'ai trouvé une solution: 

1) Générer une clé RSA: 

$ openssl genrsa -out key.pem 1024 
$ openssl rsa -in key.pem -text -noout 

2) Enregistrez la clé publique dans le fichier pub.pem: 

$ openssl rsa -in key.pem -pubout -out pub.pem 
$ openssl rsa -in pub.pem -pubin -text -noout 

3) Crypter des données: 

$ echo test test test > file.txt 
$ openssl rsautl -encrypt -inkey pub.pem -pubin -in file.txt -out file.bin 

4) Décrypter les données cryptées: 

$ openssl rsautl -decrypt -inkey key.pem -in file.bin 

Il fonctionne comme un charme

Merci à Marek Marcola d’avoir fourni l’information http://openssl.6102.n7.nabble.com/Re-Can-I-use-my-own-keys-with-openssl-for-RSA-enc-dec- td12506.html

18
caramba

J'ai également fait face à ce problème et pense qu'un bon indice est là:

Comment puis-je transformer entre les deux styles de format de clé publique, l'un "BEGIN RSA PUBLIC KEY", l'autre est "BEGIN PUBLIC KEY"

Il semble que la commande de chiffrement OpenSSL souhaite une clé publique SSL au lieu d'une clé publique RSA.

Nous en savons maintenant assez pour modifier l’exemple et le faire fonctionner. Une clé publique SSL peut être générée à partir d’une clé publique RSA avec

openssl rsa -in id_rsa.pem -RSAPublicKey_in -pubout > id_pub.pem

Il est alors possible de faire l’étape de chiffrement avec

openssl rsautl -encrypt -inkey id_pub.pem -pubin -in ~/Desktop/myMessage.txt -out ~/Desktop/encrypted.txt

La commande OpenSSL par défaut dans MacOSX Yosemite au moment de l'écriture semble être 0.9.8zg. La commande rsa de cette version ne permet pas d’exécuter la première commande ci-dessus. J'ai résolu ce problème en installant OpenSSL 1.0.1p.

2
Al Thompson

J'ai eu le même problème quand j'extrais la clé publique du certificat.

openssl x509 -pubkey -noout -in cert.crt > pubKey.pem

Ensuite, je voulais imprimer des informations sur la clé avec la commande ci-dessous.

openssl rsa -text -pubin -in pubKey.pem

Et obtient une erreur: unable to load Public Key

Solution

J'ai ouvert pubKey.pem dans le Bloc-notes ++ et dans le menu Encodage , la nomenclature UCS-2 LE a été sélectionnée. Je l'ai donc changé en encodage UTF-8. La taille de pubKey.pem était égale à la moitié de celle d'origine après modification de l'encodage. Ensuite, cela fonctionne comme un charme. 

Testé sous Windows et PowerShell

0