«Сертификат открытого ключа и закрытый ключ не совпадают» при использовании сертификата, выпущенного Godaddy [закрыто]

86

Я пытаюсь установить SSL-сертификат GoDaddy на новый балансировщик нагрузки, который я настраиваю на Amazon AWS. Первоначально я создал сертификат в Godaddy с помощью программы keytool для прямой установки на сервере Glassfish 3.1 (Amazon linux ami). У меня не было проблем с установкой прямо на сервере. Теперь мне нужно переместить сертификат с веб-сервера на новый балансировщик нагрузки. Amazon требует, чтобы закрытый ключ и сертификаты были в формате PEM, поэтому я использовал инструмент «смены ключей» в GoDaddy для создания новых сертификатов. Когда я загружаю их на экране настройки балансировщика нагрузки в консоли AWS Mgmt, я получаю сообщение об ошибке: «Сертификат открытого ключа и закрытый ключ не совпадают».

Вот как я создаю ключи:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

Затем я отправляю файл .csr в GoDaddy во время процесса смены ключей. После завершения смены ключа я загружаю 2 вновь созданных сертификата (apps.mydomain.com.crt и gd_bundle.crt). Я загружаю их, выбирая (Apache) в качестве типа сервера (я также пробовал «другой» и «Cpanel», но все они выглядят одинаково).

На этом этапе я удаляю шифрование из файла private.key, используя следующую команду:

$ openssl rsa -in private.key -out private.pem

На этом этапе я возвращаюсь в консоль AWS Mgmt, создаю балансировщик нагрузки, добавляю защищенное перенаправление сервера и помещаю содержимое следующих файлов в соответствующие поля на экране, где он запрашивает настройку сертификата ssl:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain

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

-Есть ли способ проверить, что я получаю действительное сообщение об ошибке от Amazon? Мне кажется странным, что ключи не совпадают, когда я очень внимательно следую инструкциям GoDaddy.

Я пробовал создать файл private.key без шифрования RSA перед созданием .csr, и это, похоже, не имеет никакого значения.

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

Любые идеи?

Фелби
источник
1
Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. Какие темы можно задать здесь, в Справочном центре. Возможно, суперпользователь будет лучшим местом, чтобы спросить. Также см. Где я могу задать вопросы о Dev Ops? .
jww 01
Этому посту более трех лет, зачем его перемещать сейчас?
Felby 03
1
Фелби - люди часто говорят: «... но посмотрите этот пост и этот пост». Так что недостаточно поддерживать порядок в новых сообщениях - мы должны хотя бы получать сообщения о старых сообщениях. И какова его ценность, я не думаю, что это плохой вопрос. Это просто немного не по теме для Stack Overflow.
jww 03
@Felby, вы должны рассмотреть этот ответ для принятия. Это то, что ищет большинство разработчиков, когда возникает проблема с AWS.
Ноэль Барон

Ответы:

61

Для меня это было два простых шага:

  1. Преобразуйте закрытый ключ в PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. Преобразуйте сертификат и комплект сертификатов в PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

Джонатон Хилл
источник
1
Этот конкретный ответ мне действительно помог. Спасибо, Джонатан. Для записи, yourdomain.crt - это открытый ключ, сертификат, который вы получили от своего провайдера (также может быть .cer)
user_v
я продолжаю получать ошибкуWARNING: can't open config file: /etc/pki/tls/openssl.cnf
tq
2
@tq - некоторые команды OpenSSL -configтоже имеют опцию. Используйте его, чтобы указать путь к используемому вами файлу конфигурации.
jww 01
@felby Следует отметить этот ответ как принятый. Это единственный ответ, который не создает проблемы с доверием SSL для устройств iOS.
Ноэль Барон
Этот ответ действительно полезен для SSL с подстановочными знаками. Вам необходимо преобразовать файлы domain.crt и gd_bundle.crt.
Ducle 07
40

Просто для протокола и всех, кто пытается в этом разобраться:

yourdomain.key -> команда терминала: sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> закрытый ключ

yourdomain.crt -> открытый ключ

gd_bundle.crt -> цепочка сертификатов

и тебе хорошо :)

Крис Дж
источник
2
OMG, я потерял столько часов с проблемой, ты только что спас меня! Я приобрел сертификат RapidSSL: уловка заключалась в том, чтобы 1) преобразовать закрытый ключ, как вы предлагаете здесь, и 2) изменить порядок сертификатов в цепочке сертификатов, предоставленных RapidSSL. Благодарность!
MiniQuark
продолжает спрашивать у меня пароль, но мой сертификат quickssl был сделан без пароля
tq
Команда sudo запросит пароль администратора, если только ваша учетная запись не настроена таким образом, что пароль не требуется несколькими различными способами. Вы тоже имеете в виду этот пароль?
Chris J
Чтобы добавить что-то там, где это может найти кто-то, кому это нужно, мы получили сертификат Host Gator от клиента, и он выглядел довольно хорошо настроенным - никаких преобразований pem, и пакет CA уже был объединен. Однако в Amazon не пошел. То же самое и с порядком сертификатов в связке. Поменяв порядок, он вошел и заработал.
CargoMeister
23

Похоже, проблема заключалась в том, как я копировал содержимое ключа и сертификатов в консоль управления AWS. Я использовал рабочий стол Ubuntu, работающий в Virtual Box, на рабочем столе Windows 7; скопируйте и вставьте значения из экрана gedit в браузер, работающий в окне Windows. Как только я открыл файлы ключей и сертификатов в том же окне, что и веб-браузер (в данном случае Windows), сертификаты прошли нормально. Я предполагаю, что некоторые части файла не перерабатываются правильно при использовании общего буфера обмена между клиентом Virtual Box и хостом. Дело закрыто.

Фелби
источник
Можете ли вы принять свой ответ, чтобы люди знали, что проблема решена?
Фил Стерджен
2
Странно, я думал, что уже давно принял это ...
Фелби
7

Мы нашли альтернативное решение этой проблемы. У нас были те же симптомы с той же ошибкой.

Затем мы попытались повторно ввести коды pem еще раз, но на этот раз мы убедились, что нажимаем Enter один раз и проверяем, что курсор находится на пустой строке в конце каждого окна. Потом мы его сохранили. ЭТО СРАБОТАЛО.

Это решило нашу проблему, поэтому может решить ее для других.

Тарелка
источник
1

Одна маленькая ошибка. Я использую окно Windows (Win 7 Pro), и когда я использовал порт OpenSSL для Windows, в выводимых файлах были символы конца строки (LF) в стиле Unix.

Мне пришлось преобразовать файл в стиль Windows (CRLF) для загрузки закрытого ключа.

Кристофер Стивенсон
источник
0

Я могу предложить вам альтернативное решение и информацию для вас, ребята. Как правило, все сертификаты имеют формат файла PEM. Вы можете просто открыть блокнот или любой текстовый редактор и перетащить полученные файлы в формате .crt. Который обычно называется файлом .PEM. Если сертификат загружен в ваш keytool, вы можете экспортировать сертификат как файл pfx из keytool. Затем вы можете отделить файл pfx от закрытого ключа от файла pfx. Поскольку файл pfx представляет собой комбинацию вашего сертификата и закрытого ключа, вы можете получить отдельно файл закрытого ключа и использовать его на своем amazon aws.

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

Раджан
источник