Я пытаюсь настроить SSL на балансировщике нагрузки с помощью сертификата, приобретенного в GoDaddy.
При попытке загрузить сертификат в консоль возникла ошибка
Не удалось создать балансировщик нагрузки: сертификат сервера не найден для ключа: arn: aws: iam :: ************: server-certificate / mycert
Я никогда раньше не сталкивался с этой ошибкой при добавлении сертификатов SSL. Я не уверен почему iam
здесь даже используется.
После некоторого поиска в Google мне удалось загрузить свой сертификат в iam
используя aws cli (опять же, не знаю, зачем мне это пришлось делать).
Теперь при изменении слушателей я могу видеть загруженный сертификат как существующий сертификат SSL. Однако, когда я пытаюсь сохранить свои изменения в балансировщике нагрузки, я получаю ту же ошибку. Я подтвердил, что сертификат существует:
$ aws iam list-server-certificates
{
"ServerCertificateMetadataList": [
{
"ServerCertificateId": "*********************",
"ServerCertificateName": "mycert",
"Expiration": "2018-11-19T18:47:38Z",
"Path": "/",
"Arn": "arn:aws:iam::************:server-certificate/mycert",
"UploadDate": "2015-11-19T19:23:32Z"
}
]
}
(Я проверил, что запутанный номер счета такой же, как и в ошибке)
Отсюда я застрял. Почему я не могу применить свой сертификат к этому балансировщику нагрузки?
Подождав некоторое время и выйдя из системы и войдя в нее, я смог обновить слушателей с помощью моего сертификата SSL. Однако похоже, что это не работает правильно. При попытке загрузить мой домен через HTTPS
время запроса истекло. Кажется, не удалось загрузить сертификат
$ echo | openssl s_client -connect www.example.com:443 2>/dev/null | openssl x509 -noout -subject
unable to load certificate
69457:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
Я столкнулся с той же проблемой при попытке создать ELB из веб-консоли. Я пытался загрузить туда новый сертификат через графический интерфейс, и, наконец, он терпел неудачу с той же ошибкой. Я решил это, загрузив файлы сертификатов отдельно через aws cli. Это объясняется в этом документе - http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ssl-server-cert.html#upload-cert
Загрузите сертификат, закрытый ключ и цепочку сертификатов, как это
aws iam upload-server-certificate --server-certificate-name my-server-cert \
--certificate-body file://my-certificate.pem --private-key file://my-private-key.pem \
--certificate-chain file://my-certificate-chain.pem
Затем перейдите в веб-консоль и выберите вариант «Выбрать существующий сертификат из AWS Identity and Access Management (IAM)» и выберите только что загруженную пару сертификатов. После этого он будет работать нормально.
Ошибка вводит в заблуждение. Он загружает сертификат. Как только вы получите эту ошибку, выйдите, вернитесь к изменениям. Выберите существующий сертификат IAM и щелкните раскрывающийся список - вы должны увидеть там новый сертификат.
У меня была такая же проблема, но, к счастью, мне удалось ее решить, не нажимая на интерфейс командной строки. Я получил ELB, чтобы добавить слушателя HTTPS, вставив цепочка сертификатов в сертификат открытого ключа после самого сертификата.
Ошибка проявлялась только тогда, когда цепочка сертификатов была вставлена в собственную. цепочка сертификатов поле ввода в консоли (помечено как необязательное). Не совсем уверен Зачем это имело значение, но он создал прослушиватель HTTPS на ELB, и все было хорошо.
Это произошло из-за специального символа в имени сертификата:. (Точка) в моем случае. Все работало нормально после удаления всех точек из имени сертификата
Я тоже это ударил. Пытался создать новый ELB пять раз и каждый раз терпел неудачу. Никогда не пробовал использовать вариант API, но мне удалось установить сертификат SSL с помощью
Я столкнулся с той же проблемой. В моем случае я получил сообщение об ошибке «Сертификат сервера не найден для ключа» при загрузке сертификата SSL, но в конечном итоге они загружаются и отображаются в раскрывающемся списке. Я не получаю ошибок при загрузке через CLI. Когда я связался со службой поддержки AWS, они дали мне следующую причину ошибки
Причина этого - возможная последовательность. Загруженные сертификаты хранятся в IAM. Поскольку IAM имеет огромную базу данных, загруженный сертификат должен распространяться по всем базам данных. Если для распространения недостаточно времени, ELB, который пытается получить этот сертификат, не сможет найти его в конечной точке, которую он запрашивает. Следовательно, выдает «Сертификат сервера не найден для ключа». Когда он в конечном итоге будет распространен, он позже сможет увидеть его как уже загруженный сертификат.
Я обошел это, перейдя в диспетчер сертификатов в консоли AWS и сначала загрузив туда. Затем с помощью мастера балансировки нагрузки и выбора сертификата, который я загрузил.
Та же проблема при использовании веб-интерфейса AWS: я загрузил действующий сертификат, правильный ключ и всю цепочку, но получил вышеупомянутую ошибку.
Я попытался загрузить сертификат на другой (тестовый) балансировщик нагрузки. Загрузка прошла успешно, но статус слушателя говорит: «Недействительный сертификат».
Когда я снова открыл диалоговое окно «Выбрать сертификат», сертификат не был выбран. Но очевидно, что сертификат был загружен правильно, потому что я мог выбрать его в списке сертификатов.
Итак, вернувшись к моему исходному балансировщику нагрузки, я попытался назначить этот загруженный сертификат, что сейчас странно: его не было в списке. Я попробовал еще раз и загрузил сертификат и его ключ, но не упомянул цепочку сертификатов. Это сработало, поэтому я знал, что это должна быть цепочка, это неверно (это товарный сертификат). Я снова скачал цепочку с официальной страницы, загрузил весь бандл, и все заработало. Странная вещь: когда я сравнил их обоих - испорченный и новый загруженный, они кажутся одинаковыми. Те же даты, тот же сериал, тот же самый. Но другое.
Короче говоря: это сработало, повторно загрузив промежуточные сертификаты.
У меня была такая же проблема, и что в конечном итоге было исправлено, это вход в группу безопасности для балансировщика нагрузки и обеспечение того, чтобы порт 443 был открыт.
Перед созданием классического балансировщика нагрузки вам необходимо создать AMI (образ вашего экземпляра в производственной среде). Для этого перейдите в настройки создания балансировщика нагрузки и повторите процесс еще раз, после чего сертификаты предоставлены, и в моем случае все идет хорошо.
Я обошел это не заполнение по желанию Цепочка сертификатов поле.
У меня была такая же проблема, если я загружал сертификат напрямую.
Если бы я использовал диспетчер сертификатов (AWS Certificate Manager - ACM), я смог бы загрузить сертификат. После этого я мог просто выбрать сертификат в раскрывающемся списке.