it-swarm.com.de

OpenSSL kann den öffentlichen Schlüssel nicht laden

Versuch, eine Textnachricht über die Befehlszeile unter OSX Yosomite 10.10.2 zu verschlüsseln

Öffentlicher .pem-Schlüssel wie folgt erstellt:

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

Wenn ich versuche, myMessage.txt zu verschlüsseln

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

Ich bekomme unable to load Public key

Wenn ich dann tippe:

openssl asn1parse -in id_rsa.pem

Rückgabe: Error: offset too large

Aber ich habe keine Ahnung, wie ich es reparieren soll. Was muss ich ändern, damit es funktioniert?

8
caramba

Ich weiß immer noch nicht, was in meiner Frage schief gelaufen ist, aber eine Lösung gefunden hat: 

1) Generieren Sie den RSA-Schlüssel: 

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

2) Speichern Sie den öffentlichen Schlüssel in der pub.pem-Datei: 

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

3) Verschlüsseln Sie einige Daten: 

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

4) Verschlüsselte Daten entschlüsseln: 

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

Es wirkt wie ein Zauber

Vielen Dank an Marek Marcola für die Bereitstellung der Informationen http://openssl.6102.n7.nabble.com/Re-Can-I-use-my-own-keys-with-openssl-for-RSA-enc-dec -td12506.html

18
caramba

Ich bin auch mit diesem Problem konfrontiert und denke, ein guter Hinweis ist hier:

Wie kann ich zwischen den beiden Stilen des öffentlichen Schlüsselformats umwandeln, einen "BEGIN RSA PUBLIC KEY", der andere "BEGIN PUBLIC KEY"

Es scheint, dass der OpenSSL-Verschlüsselungsbefehl einen öffentlichen SSL-Schlüssel anstelle eines öffentlichen RSA-Schlüssels verlangt.

Wir wissen jetzt genug, um das Beispiel zu optimieren, damit es funktioniert. Ein öffentlicher SSL-Schlüssel kann aus einem öffentlichen RSA-Schlüssel mit generiert werden

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

Es ist dann möglich, den Verschlüsselungsschritt mit durchzuführen

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

Der standardmäßige OpenSSL-Befehl in MacOSX Yosemite scheint zu diesem Zeitpunkt 0,9,8 zg zu sein. Der Befehl rsa in dieser Version unterstützt nicht die Möglichkeit, den ersten Befehl oben auszuführen. Ich habe dieses Problem gelöst, indem ich OpenSSL 1.0.1p installiert habe.

2
Al Thompson

Ich hatte das gleiche Problem, als ich den öffentlichen Schlüssel aus dem Zertifikat extrahierte.

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

Anschließend wollte ich Informationen über den Schlüssel mit dem folgenden Befehl ausdrucken.

openssl rsa -text -pubin -in pubKey.pem

Und bekommt einen Fehler: unable to load Public Key

Lösung

Ich habe pubKey.pem in notepad ++ geöffnet und im Menü Encoding wurde UCS-2 LE BOM ausgewählt. Also habe ich es in UTF-8-Kodierung geändert. Die Größe von pubKey.pem betrug nach dem Ändern der Kodierung die Hälfte der ursprünglichen Größe. Dann funktioniert es wie ein Zauber. 

Getestet in Windows und Powershell

0