Ho la chiave id_rsa.pub generata da ssh-keygen. Come posso convertire a livello di codice i file id_rsa.pub in chiavi formattate DER RSA?Converti la chiave pubblica RSA in RSA DER
risposta
Se si utilizza ssh-keygen per generare una chiave:
$ ssh-keygen
allora si può solo usare OpenSSL per estrarre la chiave pubblica e scriverlo nel formato DER come questo:
$ openssl rsa -in id_rsa -out pub.der -outform DER -pubout
writing RSA key
è possibile visualizzare l'output DER come PEM in questo modo:
$ openssl rsa -in pub.der -inform DER -pubin -text
non faccio uso di Ruby, quindi non so quanto sia facile da usare OpenSSL da Ruby.
Modifica: ho risposto troppo velocemente - hai scritto id_rsa.pub e potresti non avere id_rsa. Un'altra domanda di overflow dello stack è per la conversione inversa, ma il codice sorgente trovato potrebbe aiutare: Convert pem key to ssh-rsa format Una volta che hai PEM puoi usare openssl per convertire il PEM in DER.
Modifica, maggio 2014: Ruby è diventato il mio linguaggio di programmazione preferito e la domanda originale (dopo la modifica) ha chiesto informazioni su Ruby. Ecco il codice per leggere l'id_rsa.pub (chiave pubblica) e scrivere un OpenSSL-generated, DER formattato chiave pubblica:
require 'openssl'
require 'base64'
def read_length(s)
# four bytes, big-endian
length = s[0..3].unpack('N')[0]
end
def read_integer(s, length)
# shift all bytes into one integer
s[4..3 + length].unpack('C*').inject { |n, b| (n << 8) + b }
end
def cut(s, length)
s[4 + length..-1]
end
def decode_pub(pub)
# the second field is the Base64 piece needed
s = Base64.decode64(pub.split[1])
# first field reading "ssh-rsa" is ignored
i = read_length(s)
s = cut(s, i)
# public exponent e
i = read_length(s)
e = read_integer(s, i)
s = cut(s, i)
# modulus n
i = read_length(s)
n = read_integer(s, i)
[ e, n ]
end
def make_asn1(e, n)
# Simple RSA public key in ASN.1
e0 = OpenSSL::ASN1::Integer.new(e)
n1 = OpenSSL::ASN1::Integer.new(n)
OpenSSL::ASN1::Sequence.new([ e0, n1 ])
end
pub = File.read('id_rsa.pub')
asn1 = make_asn1(*decode_pub(pub))
# Let OpenSSL deal with converting from the simple ASN.1
key = OpenSSL::PKey::RSA.new(asn1.to_der)
# Write out the public key in both PEM and DER formats
File.open('id_rsa.pem', 'w') { |f| f.write key.to_pem }
File.open('id_rsa.der', 'w') { |f| f.write key.to_der }
È possibile controllare l'output con questi comandi OpenSSL nella shell:
$ openssl rsa -pubin -text -in id_rsa.pem
$ openssl rsa -pubin -text -inform DER -in id_rsa.der
Se avete solo l'accesso alla chiave pubblica generata da ssh-keygen, e si desidera convertirlo in formato DER, i seguenti lavori:
ssh-keygen -f id_rsa.pub -e -m PKCS8 | openssl pkey -pubin -outform DER
Thi s usa per la prima volta ssh-keygen
per convertire la chiave in formato PEM PKCS8, quindi usa openssl pkey
per convertirlo in formato DER.
(Ciò corrisponde alla risposta di Jim Flood, ma senza toccare il file della chiave privata.)
Ha detto * "Come posso convertire a livello di codice i file id_rsa.pub in chiavi formattate DER RSA?" *. Non ha chiesto comandi per farlo. – jww
Inoltre, non funziona su tutte le distro –
- 1. Utilizzo di una chiave pubblica RSA per decrittografare una stringa crittografata utilizzando la chiave privata RSA
- 2. Come caricare la chiave pubblica RSA dal file in C#
- 3. Come caricare in Python-RSA una chiave RSA pubblica da un file generato con openssl?
- 4. Codifica RSA con chiave pubblica codificata Base64 in Android
- 5. Crittografia con chiave privata RSA in Java
- 6. Generazione chiave dell'algoritmo RSA
- 7. RSA pubblica/chiavi private in YAML
- 8. Uso Base64 codificati chiave pubblica per verificare RSA firma
- 9. Decifrare utilizzando una chiave pubblica RSA con PyCrypto
- 10. Java: Come creare una chiave pubblica RSA dalla stringa
- 11. Come cifrare con la chiave privata e decifrare con la chiave pubblica in C# RSA
- 12. Copia di una chiave pubblica rsa negli appunti
- 13. Convert RSA a chiave pubblica per PEM Format
- 14. Chiave da String in Java RSA
- 15. Come utilizzare la chiave privata RSA crittografata con PyCrypto?
- 16. Flash SecureSocket e RSA chiave privata
- 17. SELinux impedisce ssh con la chiave RSA
- 18. RSA leggere PublicKey
- 19. crittografia RSA in Java, decriptare in PHP
- 20. Codifica/decodifica RSA
- 21. Verifica firma RSA iOS
- 22. RSA Size Size Mismatch
- 23. Come generare la serializzazione PEM per la chiave pubblica RSA/DSA
- 24. Come caricare RSA chiave privata da file
- 25. Estrarre la chiave pubblica dal certificato nel formato DER
- 26. Carica chiavi RSA da file
- 27. Garantire una chiave di licenza con chiave RSA
- 28. L'importazione della chiave pubblica RSA da XML utilizzando RSACryptoServiceProvider imposta la proprietà PublicOnly su false
- 29. inviare la chiave pubblica RSA per iphone e utilizzarla per cifrare
- 30. Come estrarre la chiave pubblica RSA da un file .cer e memorizzarla in un file .pem utilizzando OpenSSL?
Buona soluzione, grazie! –