У меня был веб-сайт, работающий под одним доменным именем в AppEngine, и SSL работал, как ожидалось. Однако я переключился на другое доменное имя, и мне не удалось заставить работать SSL.
Когда я перехожу к загрузке сертификата, у меня запрашивается файл сертификата «PEM, закодированный X.509» и файл закрытого ключа «Unencrypted PEM encoded RSA».
В последнем домене я просто подключил CRT и закрытый ключ. В этом ключе написано «----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ -----» вверху и не означает, что это ключ RSA, но это не имело значения. Если это важно, я сгенерировал ключ / CSR с помощью командной строки:
openssl req -new -nodes -keyout abc.com.key -out abc.com.csr -newkey rsa:2048
Однако с этим новым доменом я предоставлю CRT (который на самом деле представляет собой объединенные CRT и IA в этом порядке) и файл ключа. Ключ не имеет парольной фразы, и все они выглядят в формате PEM (стандартный, закодированный файл ASCII, верно?).
Однако я получаю сообщение об ошибке: «И закрытый ключ, и сертификат SSL должны быть в незашифрованном формате PEM». В прошлый раз этого не было.
Другой сайт сказал, что мне нужно запустить следующее, чтобы создать ключ, который может использовать AppEngine:
openssl rsa -in abc.com.key -text > abc.com.key.pem
Однако я не знаю разницы между этими двумя форматами, и новый файл имеет модуль, экспоненты, простые числа и коэффициент вверху, за которым следует «BEGIN RSA PRIVATE KEY BLOCK». При этом теперь я могу загрузить исходный CRT и этот новый файл ключей.
Это моя первая проблема (я не понимаю, что делаю здесь).
Моя вторая проблема заключается в том, что сертификат IA игнорируется: AppEngine указывает, что я загрузил только один сертификат (где-то я видел, что он должен указывать на два сертификата). Когда я загружаю IA и новый ключ по отдельности, я получаю сообщение об ошибке: «Загруженный закрытый ключ не соответствует сертификату SSL. Пожалуйста, загрузите соответствующий ключ».
Последнее, очевидно, является большей ошибкой. Я получаю некоторые ошибки проверки SSL от Python, но не от браузеров.
Буду признателен за любой совет по этому поводу.
Независимо от того, что было с предыдущими версиями администратора, если он действительно изменился, мы должны запустить вторую команду, указанную выше ("openssl rsa -in abc.com.key -text> abc.com.key .pem ").
Моя интерпретация прочитанного была неверной. AppEngine будет указывать только, что один слот сертификата был использован, когда то, что загружено, является объединенным обычным сертификатом и сертификатом IA.
AppEngine может применить изменения с задержкой до часа (во всех системах).
Я считаю, что задержка распространения была объединена с некоторым кешированием в браузерах, чтобы получить значительно противоречивые результаты.
Используя «openssl s_client abc.com -servername abc.com», я увидел гораздо более честные результаты, а также увидел, что два сертификата были настроены в цепочке, как и ожидалось.