У меня есть ключ id_rsa.pub, созданный ssh-keygen. Как программно конвертировать файлы id_rsa.pub в форматированные ключи RSA DER?Конвертировать открытый ключ RSA в RSA DER
ответ
Если вы используете SSH-кейген для генерации ключа:
$ ssh-keygen
Тогда вы можете просто использовать OpenSSL, чтобы вытащить открытый ключ и записать его в формате DER, как это:
$ openssl rsa -in id_rsa -out pub.der -outform DER -pubout
writing RSA key
Вы можете просмотреть вывод МЭД, как PEM, как это:
$ openssl rsa -in pub.der -inform DER -pubin -text
Я не использую рубин, так что я не знаю, как легко использовать OpenSSL от Ruby.
Редактировать: я ответил слишком быстро - вы написали id_rsa.pub, и у вас может не быть самого id_rsa. Другой вопрос переполнения стека - это обратное преобразование, но исходный код, который там найден, может помочь: Convert pem key to ssh-rsa format Как только вы используете PEM, вы можете использовать openssl для преобразования PEM в DER.
Редактировать, май 2014: Ruby стал моим любимым языком программирования, и оригинальный вопрос (с тех пор отредактированный) спросил о Ruby. Вот код для чтения id_rsa.pub (открытый ключ) и написать OpenSSL-генерируемый, DER-формате открытого ключа:
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 }
Вы можете проверить вывод этих OpenSSL команд в оболочке:
$ openssl rsa -pubin -text -in id_rsa.pem
$ openssl rsa -pubin -text -inform DER -in id_rsa.der
Если у вас есть доступ только к открытому ключу, порожденного SSH-серийник, и хотите, чтобы преобразовать его в формат DER, следующие работы:
ssh-keygen -f id_rsa.pub -e -m PKCS8 | openssl pkey -pubin -outform DER
Thi s сначала использует ssh-keygen
для преобразования ключа в PEMC-формат PKCS8, затем использует openssl pkey
, чтобы преобразовать его в формат DER.
(Это выполняет то же самое, как ответ Джим Флад, но не касаясь файл закрытого ключа.)
Он сказал * «Как я могу программно преобразовать файлы id_rsa.pub в форматированные ключи RSA DER?» *. Он не просил об этом команды. – jww
Плюс, не работает на всех дистрибутивах –
- 1. Кодировать открытый ключ RSA в формате DER
- 2. DER закодированный открытый ключ RSA (OCTET STRING)
- 3. RSA iphone открытый ключ
- 4. RSA Открытый ключ WSO2carbon
- 5. C# DECRYPT файл с использованием формата RSA DER Открытый ключ
- 6. Чтение ASN.1 DER-закодированный открытый ключ RSA
- 7. Как преобразовать открытый ключ PEM в открытый ключ DER?
- 8. openssl инициализирует открытый ключ RSA
- 9. C строка RSA открытый ключ
- 10. ASN1 грамматика/DER для RSA ключ
- 11. Открытый открытый ключ OPENSSL RSA из mem
- 12. Проверьте открытый ключ RSA в OpenSSL?
- 13. Невозможно BER декодировать открытый ключ RSA
- 14. Как преобразовать открытый ключ RSA в открытый ключ ssh-rsa в Java?
- 15. Можно ли преобразовать открытый ключ rsa в открытый ключ x509?
- 16. Конвертировать открытый ключ RSA, от XML до PEM (PHP)
- 17. Расшифровать открытый ключ RSA в какао
- 18. Как извлечь открытый ключ RSA в переменную?
- 19. Различного открытый ключ RSA генерируется на Android
- 20. Android Сохранить RSA Частный и открытый ключ
- 21. Создать открытый/закрытый ключ RSA с OpenSSL?
- 22. Не удалось прочитать открытый ключ RSA
- 23. Открытый ключ открытого ключа RSA для C#
- 24. Как проверить открытый ключ ECDHE, подписанный RSA?
- 25. Защитить открытый ключ RSA во время транспортировки
- 26. Java RSA как сгенерировать открытый ключ?
- 27. открытый ключ не действителен PHP RSA
- 28. Не удалось загрузить открытый ключ RSA
- 29. PHP RSA-открытый ключ base64 кодировка
- 30. Как преобразовать RSA-ключ в ssh-rsa
Хорошее решение, спасибо! –