2015-03-12 7 views
5

Der Versuch, laden Sie eine Textnachricht über die Kommandozeile auf OSX Yosomite 10.10.2OpenSSL derzeit keine Public Key

Erstellt öffentlichen .pem Schlüssel so zu verschlüsseln:

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

Wenn ich versuche, meineNachricht.txt zu verschlüsseln

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

ich unable to load Public key

Wenn ich geben Sie dann:

openssl asn1parse -in id_rsa.pem 

Returns: Error: offset too large

Aber ich habe keine Ahnung, wie es zu beheben. Was sollte ich ändern, damit es funktioniert?

Antwort

12

Ich weiß immer noch nicht, was in meiner Frage schief gelaufen ist, aber hier eine Lösung gefunden: http://openssl.6102.n7.nabble.com/Re-Can-I-use-my-own-keys-with-openssl-for-RSA-enc-dec-td12506.html hoffe, es ist erlaubt, es hier zu teilen. Vielen Dank an Marek Marcola, der die Frage in der Verbindung beantwortet welche sagt der folgende:

1) Generieren von RSA-Schlüssel:

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

2) Speichern öffentlicher Schlüssel in pub.pem Datei:

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

3) verschlüsseln einige Daten:

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

4) Entschlüsseln verschlüsselter Daten:

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

Es wirkt wie ein Zauber

2

ich dieses Problem konfrontiert auch und denke, ein guter Tipp ist hier:

How can I transform between the two styles of public key format, one "BEGIN RSA PUBLIC KEY", the other is "BEGIN PUBLIC KEY"

Es scheint, dass die OpenSSL-Verschlüsselung Befehl stattdessen eine SSL öffentlichen Schlüssel will eines öffentlichen RSA Schlüssels.

Wir wissen jetzt genug, um das Beispiel zu optimieren, damit es funktioniert. Eine SSL öffentliche Schlüssel kann von einem öffentlichen RSA-Schlüssel mit

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

erzeugt werden Es ist dann möglich, den Verschlüsselungsschritt mit

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

Der Standard OpenSSL-Befehl in MacOSX Yosemite zum Zeitpunkt des Schreibens zu tun erscheint zu 0.9.8zg sein. Der rsa Befehl in dieser Version unterstützt nicht die Möglichkeit, den ersten Befehl oben auszuführen. Ich habe mit der Installation von OpenSSL 1.0.1p daran gearbeitet.