Как преобразовать закрытый ключ в закрытый ключ RSA?
Позвольте мне сначала объяснить свой вопрос. Я купил сертификат из CA и использовал следующий формат для генерации csr и закрытого ключа:
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
Когда я открываю файл server.key, я вижу, что он начинается с "----- BEGIN PRIVATE KEY -----"
Я использую 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 Invalid Private Key."
Интересно, что на странице aws doc типичный закрытый ключ, который они показывают, начинается с "------- Начать RSA Private Key --------"
Есть ли способ конвертировать мой закрытый ключ в закрытый ключ RSA с помощью openssl?
Ответы
Ответ 1
Новые версии 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
Ответ 2
Это может оказать некоторую помощь (буквально не выписывать обратную косую черту в командах, они должны указывать, что "все должно быть в одной строке" ):
![Какую команду применять при]()
Кажется, что все команды (серым) принимают любой тип ключевого файла (зеленым) как аргумент "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
Ответ 3
Преобразовать "BEGIN OPENSSH PRIVATE KEY" в "BEGIN RSA PRIVATE KEY"
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa