2015-03-12 13 views
5

Cercando di crittografare un messaggio di testo tramite riga di comando su OSX Yosomite 10.10.2OpenSSL in grado di caricare Public Key

Creato pubblico .pem chiave come questo:

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

Se provo per cifrare messaggio.txt

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

ottengo unable to load Public key

Se io quindi digitare:

openssl asn1parse -in id_rsa.pem 

Returns: Error: offset too large

Ma non ho idea di come risolvere il problema. Cosa devo cambiare per farlo funzionare?

risposta

12

Ancora non so cosa è andato storto nella mia domanda ma ho trovato una soluzione qui: http://openssl.6102.n7.nabble.com/Re-Can-I-use-my-own-keys-with-openssl-for-RSA-enc-dec-td12506.html spero che sia permesso condividerlo qui. Un grande grazie a Marek Marcola che hanno risposto alla domanda nel link che dice quanto segue:

1) Generare chiavi RSA:

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

2) Salva chiave pubblica nel file di pub.pem:

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

3) Codificare alcuni dati:

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

4) decifrare i dati crittografati:

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

Funziona come un fascino

2

Ho affrontato questo problema anche e che un buon suggerimento è qui:

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

Sembra che il comando di cifratura OpenSSL vuole una chiave pubblica SSL invece di una chiave pubblica RSA.

Ora sappiamo abbastanza per modificare l'esempio per farlo funzionare. Uno SSL chiave pubblica può essere generata da una chiave pubblica RSA con

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

E 'quindi possibile fare il passo cifratura con

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

Il comando predefinito OpenSSL in MacOSX Yosemite a partire dal compare questa scrittura essere 0.9.8zg. Il comando rsa in questa versione non supporta la capacità di eseguire il primo comando sopra riportato. Ho lavorato su questo installando OpenSSL 1.0.1p.

Problemi correlati