Импортировать сертификат в AWS ACM: исключение ValidationException при вызове операции ImportCertificate: поле сертификата содержит более одного сертификата

Я пытаюсь импортировать некоторые сертификаты ssl в формате PEM в AWS ACM через aws cli.Сертификаты поступают из установки nginx при попытке импортировать их с помощью следующей команды:

aws acm import-certificate --certificate ssl.website.com.crt --private-key ssl.website.com.key --region us-east-2 --profile default

Я получаю эту ошибку:

An error occurred (ValidationException) when calling the ImportCertificate operation: The certificate field contains more than one certificate. You can specify only one certificate in this field.

Я не эксперт по openssl, но AFAICS в pem-файле только один сертификат, есть только один раздел BEGIN / END CERTIFICATE. Я нашел эту команду в этом сообщении stackoverflow для печати сертификатов в файле pem, и я вижу только один сертификат в ее выводе:

openssl crl2pkcs7 -nocrl -certfile ssl.website.com.crt | openssl pkcs7 -print_certs -noout
subject=OU = Domain Control Validated, CN = website.com

issuer=C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2

Так почему ACM отклоняет этот сертификат? или я (очень вероятно) провожу проверки неправильно, и в этом pem-файле действительно есть второй сертификат?

0
задан 7 January 2020 в 07:24
4 ответа

Решено, вы должны добавить к значению всех параметров префикс 'file: //', например:

aws acm import-certificate --certificate file://ssl.website.com.crt --private-key file://ssl.website.com.key --certificate-chain file://ssl.website.com.ca --region us-east-2 --profile default

Я следил за этой документацией, в которой это не упоминается.

2
ответ дан 9 January 2020 в 02:51

Это указано в документации. Может быть, вы пропустили это.

При импорте сертификата с помощью интерфейса командной строки необходимо указать сертификат, цепочку сертификатов и закрытый ключ в именах файлов, которым предшествует fileb:// . Например, вы можете указать сертификат, сохраненный в папке C:\temp, как файл b://C:\temp\certificate_to_import.pem . Если вы делаете запрос HTTP или HTTPS Query, включите эти аргументы в виде больших двоичных объектов.

Скриншот, показывающий документацию о пути к сертификату

0
ответ дан 9 July 2021 в 20:55

В моем случае файл сертификата содержал несколько разделов -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----. первый и последующие были цепочкой сертификатов.

0
ответ дан 30 August 2021 в 23:55

У меня была такая же проблема, и наконец я нашел решение.

Это ошибка интерфейса командной строки AWS, поскольку сертификат действителен. Однако в моем случае файл сертификата имел лишний пробел в конце каждой строки (Я не знаю, почему наш центр сертификации -Sectigo в этом случае -кстати генерировал такие странные сертификаты). ]. Удаление этого дополнительного пространства решило проблему.

Это так же просто, как:

$ perl -i -pe 's/ $//gm' certificate_file.crt
0
ответ дан 25 November 2021 в 08:50

Теги

Похожие вопросы