AWS CloudFront сообщает, что открытый ключ недействителен или выходит за пределы допустимого

Я пытаюсь загрузить открытый ключ в AWS CloudFront. Я генерирую ключ следующим образом

ssh-keygen -t ecdsa -b 521

я тоже пробовал

ssh-keygen -b 4096

Когда я загружаю его через консоль, я получаю следующую ошибку: com.amazonaws.services.cloudfront.model.InvalidArgumentException: Ваш запрос содержит пустой/недействительный/недопустимый закодированный ключ RSA (служба: AmazonCloudFront; код состояния: 400; ошибка Код: InvalidArgument; идентификатор запроса: 08fa98af-0c02-11ea-b06e-d771d01bbfcb)

Результатом ssh -V является «OpenSSH_7.7p1, OpenSSL 1.0.2p 14 августа 2018 года».

Любая помощь будет оценена по достоинству. Спасибо.


person Ian Stewart    schedule 21.11.2019    source источник


Ответы (2)


Это связано с тем, что CloudFront не поддерживает ключи длиной 4096 бит. Когда вы запускаете команду openssl rsa -pubout -in key.pem -out pubkey.pem, она по умолчанию генерирует 2048-битные ключи, которые она принимает.

The length of the public key for a certificate depends on where you're storing it.

Importing a certificate into AWS Certificate Manager (ACM): public key length must be 1024 or 2048 bits. The limit for a certificate that you use with CloudFront is 2048 bits, even though ACM supports larger keys.

Uploading a certificate to the AWS Identity and Access Management (IAM) certificate store: maximum size of the public key is 2048 bits.

CloudFront SSL

person James Dean    schedule 21.11.2019
comment
Я пробовал ssh-keygen -b 2048, и это тоже не сработало. Кажется, CloudFront специально хочет OpenSSL - person Ian Stewart; 21.11.2019
comment
один вопрос, однако, Cloudfront не позволяет загружать самоподписанный сертификат, как это произошло? и файл публикации ssh-key имеет формат, отличный от формата открытого ключа. - person James Dean; 22.11.2019
comment
Я просто перешел в Консоль управления CloudFront > Открытый ключ > Добавить открытый ключ. Я хочу использовать этот открытый ключ для подписанных URL-адресов. Возможно, я делаю что-то не так. - person Ian Stewart; 22.11.2019
comment
ahh для подписанного URL-адреса, не говоря уже о предыдущем вопросе, но открытый ключ имеет формат ключа RSA. ssh-keygen этого не делает - person James Dean; 23.11.2019
comment
Пожалуйста, проигнорируйте мой ответ, я думаю, что он для CloudFront HTTS. - person James Dean; 24.11.2019
comment
Обновление: вы не можете использовать этот метод для подписанных URL-адресов. Эта Консоль управления CloudFront > Открытый ключ > Добавить открытый ключ предназначена для чего-то еще, а для подписанных URL-адресов вам необходимо использовать учетную запись root пользователя. Весь мой вопрос спорный. - person Ian Stewart; 28.06.2021

Я решил это, сгенерировав ключ таким образом:

openssl genrsa -out key.pem

openssl rsa -pubout -in key.pem -out pubkey.pem

И загружаем получившийся pubkey.pem. Я до сих пор не уверен в конкретной причине, по которой мой предыдущий метод не работал.

person Ian Stewart    schedule 21.11.2019
comment
Я попробовал это. Это также не работает для меня. Я не уверен, почему. - person Amila Fonseka; 16.06.2021