bg-tutorials

Как установить SSL-сертификат в Google App Engine

Это руководство показывает вам как установить SSL-сертификат на Google App Engine, как современным способом (бесплатный сертификат, управляемый Google, который App Engine выдает и автоматически обновляет для любого пользовательского домена), так и устаревшим способом (загрузка собственного стороннего сертификата, когда вам нужен конкретный CA, сертификат EV/OV или wildcard). App Engine — это полностью управляемая платформа PaaS, поэтому все это происходит в Google Cloud Console или через gcloud CLI; вам никогда не придется входить на сервер.

Предварительные требования

Прежде чем устанавливать сертификат, убедитесь, что выполнены следующие условия:

  • Развернутое приложение App Engine (стандартная или гибкая среда) в проекте Google Cloud.
  • Зарегистрированный домен, которым вы владеете, с доступом к его записям DNS.
  • Домен, подтвержденный для вашей учетной записи Google через Google Search Console или Webmaster Central (App Engine считывает оттуда подтвержденное владение).
  • Установленный и авторизованный CLI gcloud, если вы предпочитаете командную строку консоли.
  • Роль владельца, редактора или администратора App Engine в проекте.

Пользовательские домены и SSL в App Engine работают в следующем порядке: подтвердите домен, привяжите его к вашему приложению, направьте DNS на App Engine, а затем либо позвольте Google выпустить управляемый сертификат, либо загрузите собственный.

Вариант 1: Бесплатный SSL, управляемый Google (рекомендуется)

Сертификаты, управляемые Google, бесплатны, автоматически выпускаются через Let’s Encrypt и автоматически обновляются до тех пор, пока домен остается привязанным. Это вариант по умолчанию для любого нового пользовательского домена в App Engine и правильный выбор для подавляющего большинства сайтов. Управляемые сертификаты не поддерживают wildcard: каждое имя хоста (например, example.com и www.example.com) покрывается собственным сертификатом.

Шаг 1: Подтвердите владение вашим доменом

В браузере войдите в Google Search Console с той же учетной записью Google, которой принадлежит проект Cloud, добавьте ваш домен как ресурс и выполните один из методов подтверждения (запись DNS TXT наиболее надежна). App Engine не позволит вам привязать домен, который вы не подтвердили.

Шаг 2: Привяжите пользовательский домен в консоли

  • Откройте Google Cloud Console и выберите ваш проект.
  • В меню навигации выберите App Engine > Settings.
  • Откройте вкладку Custom Domains и нажмите Add a custom domain.
  • Выберите подтвержденный домен из выпадающего списка, затем введите поддомены, которые вы хотите обслуживать (обычно корневой example.com и www.example.com).
  • Нажмите Save mappings, затем следуйте инструкциям на экране, чтобы добавить предложенные записи A, AAAA и CNAME у вашего DNS-провайдера.

Чтобы сделать то же самое из командной строки, выполните:

gcloud app domain-mappings create www.example.com --project=YOUR_PROJECT_ID
gcloud app domain-mappings create example.com --project=YOUR_PROJECT_ID

Шаг 3: Дождитесь управляемого сертификата

После того как DNS распространится, App Engine автоматически запрашивает сертификат Let’s Encrypt для каждого привязанного имени хоста. Выпуск обычно проходит быстро, но распространение DNS может занять до 24 часов. Проверьте статус с помощью:

gcloud app domain-mappings list --project=YOUR_PROJECT_ID

Каждая привязка показывает статус SSL MANAGED_CERTIFICATE_STATUS: OK, когда сертификат активен. Пока он выпускается, вы увидите PROVISIONING или PENDING_DNS; это обычно исправляется само собой, как только записи DNS начинают указывать на IP-адреса Google.

Шаг 4: Принудительное использование HTTPS для посетителей (стандартная среда)

В стандартной версии App Engine перенаправляйте каждый запрос на HTTPS, добавив secure: always к каждому обработчику в app.yaml:

handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301

Разверните изменение с помощью gcloud app deploy. В гибкой среде обрабатывайте перенаправление с HTTP на HTTPS на уровне приложения или балансировщика нагрузки.

Вариант 2: Загрузите собственный сторонний SSL-сертификат

Выбирайте этот путь, если вам нужен wildcard-сертификат, сертификат OV или EV от конкретного удостоверяющего центра, или сертификат, уже выпущенный для вашего домена. App Engine принимает единый PEM-файл, содержащий листовой и любые промежуточные сертификаты, а также незашифрованный закрытый ключ RSA в кодировке PEM. В загруженном PEM-файле допускается не более пяти сертификатов в общей сложности (один листовой плюс до четырех промежуточных), и загруженные сертификаты можно повторно использовать в разных проектах одной организации Cloud.

Шаг 1: Сгенерируйте CSR и закажите сертификат

Если вы уже сгенерировали CSR и получили выпущенный сертификат от вашего CA, переходите сразу к шагу 2.

CSR (запрос на подпись сертификата) — это блок закодированного текста, содержащий ваши контактные данные и данные домена, который CA использует для проверки и подписи вашего сертификата. Есть два способа его создать:

Отправьте CSR (включая маркеры ——BEGIN CERTIFICATE REQUEST—— и ——END CERTIFICATE REQUEST——) в CA при оформлении заказа. Сохраните соответствующий закрытый ключ в надежном месте; он понадобится вам во время установки.

Шаг 2: Объедините сертификат и цепочку в один файл PEM

Если CA предоставил отдельные файлы (ваш серверный сертификат плюс один или несколько промежуточных), объедините их в правильном порядке (сначала ваш сертификат, затем промежуточные). Откройте терминал в папке, где хранятся файлы, и выполните:

cat yourdomain.crt intermediate.crt > concat.crt

В Windows PowerShell эквивалентная команда выглядит так:

Get-Content yourdomain.crt, intermediate.crt | Set-Content concat.crt

Результатом будет файл сертификата в формате PEM с полной цепочкой. Если вам также нужно преобразовать форматы (например, из .pfx или .p12 в PEM), используйте наши SSL-инструменты.

Закрытый ключ должен быть незашифрованным ключом RSA в кодировке PEM (например, myserver.key.pem). Если ваш ключ защищен паролем, удалите пароль с помощью:

openssl rsa -in encrypted.key -out myserver.key.pem

Шаг 3: Загрузите сертификат в Cloud Console

  • Откройте Google Cloud Console и выберите ваш проект.
  • Перейдите в меню навигации > App Engine > Settings, затем откройте вкладку SSL Certificates.
  • Нажмите Upload a new certificate.
  • Присвойте сертификату Name, затем загрузите concat.crt в поле PEM encoded X.509 public key certificate и myserver.key.pem в поле Unencrypted PEM encoded RSA private key.
  • Нажмите Upload.

Шаг 4: Назначьте сертификат вашим доменам

На странице сведений о сертификате выберите пользовательские домены, которые вы хотите защитить, затем нажмите Save. Если домен в данный момент использует сертификат, управляемый Google, сначала отключите для него управляемый режим; в противном случае загрузка не будет применена.

Шаг 5 (опционально): Загрузите и привяжите через gcloud CLI

Та же операция из командной строки:

gcloud app ssl-certificates create 
  --display-name="example.com 2026" 
  --certificate=concat.crt 
  --private-key=myserver.key.pem

Команда возвращает новый ID сертификата. Привяжите его к привязанному домену и отключите управляемый режим для этой привязки:

gcloud app domain-mappings update www.example.com 
  --certificate-id=CERT_ID 
  --certificate-management=manual

Чтобы позже вернуться к бесплатному сертификату, управляемому Google, выполните:

gcloud app domain-mappings update www.example.com 
  --certificate-management=automatic

Примечания и ограничения

  • Управляемые сертификаты не покрывают wildcard. Для *.example.com загрузите wildcard-сертификат, как описано в варианте 2.
  • Let’s Encrypt ограничивает выпуск до 50 управляемых сертификатов в неделю на один базовый домен. Этот лимит редко становится проблемой, но имеет значение, если вы привязываете сразу много поддоменов.
  • Загруженные сертификаты, не назначенные ни одному домену, автоматически удаляются через 30 дней.
  • Максимум — один листовой сертификат плюс четыре промежуточных в одном загруженном PEM-файле.
  • Загруженный сертификат виден во всех проектах вашей организации Cloud, поэтому один wildcard-сертификат можно использовать повторно.

Проверьте установку SSL

Откройте ваш сайт по https:// и убедитесь в наличии значка замка, затем запустите более глубокую проверку с помощью нашего SSL Checker для мгновенного отчета о сертификате, цепочке и поддержке протоколов.

Часто задаваемые вопросы

Предоставляет ли App Engine бесплатные SSL-сертификаты?

Да. Как только вы привяжете подтвержденный пользовательский домен к вашему приложению App Engine и направите DNS на Google, App Engine автоматически выпустит бесплатный SSL-сертификат через Let’s Encrypt и будет обновлять его за вас. Вам не нужно за это платить и не нужно ничего загружать.

Могу ли я использовать wildcard-сертификат в App Engine?

Бесплатные сертификаты, управляемые Google, не поддерживают wildcard. Чтобы защитить *.example.com, купите wildcard-сертификат, объедините листовой сертификат и промежуточные в один файл PEM, затем загрузите его в разделе App Engine > Settings > SSL Certificates (вариант 2 выше).

Почему мой пользовательский домен показывает статус «managed certificate pending»?

App Engine не может выпустить сертификат Let’s Encrypt, пока записи DNS вашего домена не будут указывать на IP-адреса Google, предоставленные при создании привязки. Проверьте, что записи A, AAAA и CNAME совпадают со значениями, указанными в разделе Custom Domains, затем подождите распространения DNS, которое может занять до 24 часов. Выполните gcloud app domain-mappings list, чтобы повторно проверить статус.

Как перенаправить HTTP на HTTPS в App Engine?

В стандартной среде добавьте secure: always (и, по желанию, redirect_http_response_code: 301) к каждому обработчику в app.yaml, затем повторно разверните с помощью gcloud app deploy. В гибкой среде выполняйте перенаправление на уровне приложения или балансировщика нагрузки.

Нужно ли мне самостоятельно обновлять сертификат?

Только если вы загрузили собственный. Сертификаты, управляемые Google, обновляются автоматически, пока домен остается привязанным, а DNS по-прежнему указывает на App Engine. Загруженные сторонние сертификаты истекают в дату, установленную CA (в настоящее время до примерно одного года для публичных TLS-сертификатов), поэтому вам нужно будет повторить шаги загрузки и назначения до наступления этой даты.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.