Не удается добавить прослушиватель SSL, сертификат сервера не найден для ключа

19

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

При попытке загрузить сертификат в консоль я получил ошибку

Не удалось создать балансировщик нагрузки: сертификат сервера не найден для ключа: arn: aws: iam :: ************: сертификат сервера / mycert

Я никогда раньше не сталкивался с этой ошибкой при добавлении SSL-сертификатов. Я не уверен, почему iamдаже используется здесь.

После некоторого iamпоиска в Google я смог загрузить свой сертификат в 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"
        }
    ]
}

(Я подтвердил, что запутанный номер счета здесь такой же, как и в ошибке)

Отсюда я застрял. Почему я не могу применить свой сертификат к этому балансировщику нагрузки?


Редактировать Чт 19 ноября 11:47:18 PST 2015

После некоторого ожидания и выхода из системы я смог обновить слушателей своим 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
Стив Роббинс
источник
1
Сертификаты всегда хранятся в IAM, поэтому звучит так, как будто вы столкнулись с задержкой репликации IAM или другой ошибкой, когда сертификат, казалось, хранился нормально, но тогда его там не было ... что вы изначально должны были сработать. Открыта ли группа безопасности ELB для HTTPS? Если это так, то у вас есть вторая аномалия, и я бы предложил создать новый ELB с нуля и посмотреть, будет ли он вести себя по-другому.
Майкл - sqlbot

Ответы:

30

Я столкнулся с той же проблемой при попытке создать 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)» и выберите только что загруженную пару сертификатов. После этого все будет хорошо.

suryasankar
источник
1
У меня такая же проблема. Решите все так, как вы описываете, используя клиент aws, как это предлагается по ссылке, которой вы делитесь. Использование веб-формы IAM Console для вставки ключа, crt и chain НЕ работает для меня. Я установил aws-клиент на свой dev-компьютер, настроил его с помощью «aws configuration» для добавления учетных данных, а затем выполнил команду aws iam uplad-server-certificate ...
wojjas
GUI дал мне проблемы, CLI не ... как обычно.
Spechal
1
Для обновления (сейчас 2017), я только что говорил с поддержкой Amazon, и это все еще известная проблема. CLI - единственный способ убедиться, что этот процесс будет работать правильно. -_-
Николас Крайдберг
2
Середина 2017 года и проблема все еще существует.
Диого Мело
2
Конец января 2018 года - еще и выпуск
Эндрю С
17

Ошибка вводит в заблуждение. Это действительно загрузить сертификат. Как только вы получите эту ошибку, вернитесь, чтобы измениться. Выберите существующий сертификат IAM и нажмите на выпадающий список - вы должны увидеть новый сертификат там.

user384640
источник
Это то, что случилось со мной тоже. Я получил ошибку, предположив, что это означает, что сертификат не загружен, поэтому я попытался снова ... и получил другую ошибку, заявив, что сертификат уже был там. Выход из пользовательского интерфейса «новый сертификат» и возврат к выбору сертификата, который я только что загрузил как «существующий» сертификат, работали просто отлично.
coredumperror
1
Спасибо! Это так запутано. Я не могу поверить, что они не исправили что-то подобное.
17
это точно правильно
Шариф
Это продолжает происходить в рабочем процессе выгрузки сертификатов ELB IAM, но они исправили это в рабочем процессе выгрузки сертификатов ALB IAM.
Иосип Роден
5

У меня была та же проблема, но, к счастью, удалось решить ее, не обращаясь к CLI. Я получил ELB добавить HTTPS слушатель, вставив цепочку сертификатов в сертификата открытого ключа поле, после того, как сам сертификат.

Ошибка проявлялась только тогда, когда цепочка сертификатов была вставлена ​​в собственное поле ввода цепочки сертификатов в консоли (помечено как необязательное). Не совсем уверен, почему это имело значение, но он создал слушателя HTTPS на ELB, и все было хорошо.

Мэтью Лонг
источник
Это сработало для меня только сейчас с сертификатом Comodo DV, купленным через SSLmate. Отдельная проблема заключалась в том, что сразу после нажатия последней кнопки «
Отправить»
3

Это было связано со специальным символом в названии сертификата:. (Точка) в моем случае. Все работало нормально после удаления всех точек из названия сертификата

essis
источник
1
А также удалите "-" тире
ysrb
2

Я просто ударил это тоже. Пять раз пытался создать новый ELB, но каждый раз это не удавалось. Никогда не пытался вариант API, но мне удалось установить сертификат SSL с помощью

  1. Сначала создаем ELB; тогда
  2. изменив прослушиватель с HTTP на HTTPS и загрузив мой сертификат + ключ + промежуточные соединения.
Ztyx
источник
1

Я столкнулся с той же проблемой. В моем случае я получил сообщение об ошибке «Сертификат сервера не найден для ключа» при загрузке сертификата SSL, но в конечном итоге они загружаются и отображаются в раскрывающемся списке. Я не получаю никаких ошибок при загрузке через CLI. Когда я связался со службой поддержки AWS, они сообщили мне причину ошибки ниже

Причиной этого является возможная последовательность. Загруженные сертификаты хранятся в IAM. Поскольку в IAM имеется огромная база данных, загруженный сертификат должен распространяться по всем базам данных. Если для распространения недостаточно времени, ELB, который пытается получить этот сертификат, не сможет найти его в конечной точке, к которой он обращается. Следовательно выдает «Сертификат сервера не найден для ключа». Когда это в конечном счете распространяется, это позже может видеть это как уже загруженный сертификат

Рамадас
источник
1

Я справился с этим, зайдя в диспетчер сертификатов в консоли aws и загрузив туда сначала. Затем с помощью мастера балансировки нагрузки и выбора загруженного сертификата.

user160004
источник
сверхурочно я загружаю SSL в AWS и сталкиваюсь с другой проблемой. На этот раз настройка в диспетчере сертификатов, а затем просто использование в EC2 Load Balancer сработало !!
user566245
0

Та же проблема здесь при использовании веб-интерфейса AWS: я загрузил действительный сертификат, правильный ключ и полную цепочку, но получил вышеупомянутую ошибку.

Я попытался загрузить сертификат на другой (тестовый) балансировщик нагрузки. Загрузка сработала, но статус слушателя говорит: «Invalid-Certificate».

Когда я снова открыл диалог «Выбор сертификата», сертификат не был выбран. Но очевидно, что сертификат был загружен правильно, потому что я мог выбрать его в списке сертификатов.

Итак, возвращаясь к своему первоначальному балансировщику нагрузки, я попытался назначить этот загруженный сертификат, странная вещь: его не было в списке. Я дал ему новую попытку и загрузил сертификат и его ключ, но пропустил цепочку сертификатов. Это сработало, так что я знал, что это должна быть цепочка, это не правильно (это коммодо-сертификат). Я снова скачал цепочку с официальной страницы, загрузил весь пакет, и все заработало. Странная вещь: теперь, когда я сравнил их обоих - поврежденный и новый загруженный, они кажутся одинаковыми. Те же даты, тот же сериал, те же самые. Но разные.

Короче говоря: это сработало, загрузив промежуточные сертификаты снова.

Н.Р.
источник
0

У меня была та же самая проблема, и что в конечном итоге исправило ее, она входила в группу безопасности для балансировщика нагрузки и следила за тем, чтобы порт 443 был открыт.

Крис ДеГроат
источник
0

Перед созданием классического балансировщика нагрузки необходимо создать AMI (образ вашего экземпляра в производстве). Затем перейдите к настройкам создания балансировщика нагрузки и повторите процесс, а затем предоставленные сертификаты и все будет хорошо в моем случае.

dbarenas
источник
0

Я обошел это, не заполнив необязательное поле Certificate Chain .

Дэнни Шоманн
источник
0

У меня была такая же проблема, если я загружал сертификат напрямую.

Если бы я использовал диспетчер сертификатов (AWS Certificate Manager - ACM), я смог загрузить сертификат. После этого я мог просто выбрать сертификат в выпадающем списке.

flokoe
источник