2013-07-18 2 views
67

Позвольте мне сначала объяснить мой вопрос. Я купил сертификат от ЦС и используется следующий формат для создания ЧСР и закрытый ключ:Как преобразовать закрытый ключ в закрытый ключ RSA?

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr 

Когда я открываю файл server.key, я вижу, что она начинается с «----- BEGIN ЧАСТНЫЙ КЛЮЧ ----- "

Я использую SSL-сертификат на своем сервере, и все выглядит нормально.

Теперь я хочу загрузить тот же сертификат в AWS IAM, чтобы я мог использовать его для балансировки нагрузки beanstalk. Я использую следующую команду из этого AWS дока http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file -k privatekey.pem -s certificate_object_name 

меняет имена серты файлы, как требуется, но получает эту ошибку: «400 MalformedCertificate Неверных секретного ключа.»

Интересная вещь, на AWS странице док, образец закрытого ключа, который они показывают, начинается с «------- Начало RSA закрытого ключа --------»

ли есть способ конвертировать мой закрытый ключ в закрытый ключ RSA с помощью openssl?

ответ

105

Новые версии OpenSSL говорят BEGIN PRIVATE KEY, поскольку они содержат закрытый ключ + OID, который идентифицирует тип ключа (это известно как формат PKCS8). Для того, чтобы получить старый ключ стиля (известный как либо PKCS1 или традиционный формат OpenSSL), вы можете сделать это:

openssl rsa -in server.key -out server_new.key 

С другой стороны, если у вас есть ключ PKCS1 и хотите PKCS8:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem 
+0

Совершенный !! Работал как шарм. Большое спасибо! –

+1

Это также решение для получения странных сообщений об ошибках, таких как 'Invalid PEM structure ', ----- BEGIN ...' missing. 'Из таких инструментов, как Cyberduck, в то время как чистая SSH с одним и тем же ключом работает. – Daniel

+0

Это сработало для меня. Пользователи Windows могут получить OpenSSL здесь: http://slproweb.com/products/Win32OpenSSL.html – ben

14

Это может быть некоторую помощь (буквально не выписывать обратный слэш «\» в командах, они предназначены, чтобы показать, что «все должно быть на одной линии»):

Which Command to Apply When

Он с что все команды (серым) принимают любой тип ключевого файла (зеленым) как аргумент «in». Это хорошо.

Вот команды снова для упрощения копирования вставки:

openssl rsa            -in $FF -out $TF 
openssl rsa -aes256          -in $FF -out $TF 
openssl pkcs8 -topk8 -nocrypt        -in $FF -out $TF 
openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -in $FF -out $TF 

и

openssl rsa -check -in $FF 
openssl rsa -text -in $FF 
+0

Файл «graphml» изображения (который может быть отредактирован с помощью [yworks yed] (https://www.yworks.com/products/yed)) можно найти [здесь ] (https://s3-eu-west-1.amazonaws.com/lohlxadsvl/openssl_commands.graphml) –