bg-tutorials

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

В этом руководстве вы узнаете, как установить SSL-сертификат в AWS (Amazon Web Services). В AWS вы не устанавливаете сертификат на отдельный сервер так, как это делается с Apache или Nginx. Вместо этого вы один раз импортируете сертификат в хранилище сертификатов, а затем привязываете его к управляемому сервису (балансировщику нагрузки, CloudFront или API Gateway), который и завершает TLS-соединение. В этом руководстве рассматриваются AWS Certificate Manager (ACM), устаревшее хранилище сертификатов IAM и Elastic Load Balancing (ELB).

Перед установкой вам нужно сгенерировать запрос на подпись сертификата (CSR) и отправить его в Центр сертификации на утверждение. Если вы еще не выполнили этот шаг, начните с первой части этого руководства. Если у вас уже есть файлы SSL-сертификата, переходите сразу к руководству по установке ниже.

Как сгенерировать код CSR в AWS

При заказе SSL-сертификата один из важных шагов — отправить код CSR своему поставщику SSL, также называемому Центром сертификации. CSR содержит закодированную информацию о вашем доменном имени и организации. Без предоставления этого блока кода получить подписанный SSL-сертификат невозможно. У вас есть два варианта:

  • Использовать наш генератор CSR для автоматического создания CSR.
  • Сгенерировать CSR вручную. Лучший вариант — создать CSR на том же сервере, где будет работать ваш SSL-сертификат. Выберите руководство для своей платформы:

Если у вас есть только балансировщик нагрузки и нет исходного веб-сервера, на котором можно выполнить команду, вы можете создать свой CSR и закрытый ключ с помощью инструмента OpenSSL:

openssl req -new -newkey rsa:2048 -nodes -keyout yoursite.key -out example.csr

Примечание: замените yoursite на доменное имя, которое вы хотите защитить. Эта команда также записывает ваш закрытый ключ (yoursite.key); сохраните его в надежном месте, так как он понадобится позже для импорта сертификата.

После выполнения команды OpenSSL записывает CSR в файл example.csr. Откройте этот файл и скопируйте весь блок, включая строки ——BEGIN CERTIFICATE REQUEST—— и ——END CERTIFICATE REQUEST——. Этот код нужно будет вставить во время активации вашего SSL-сертификата.

Подготовьте все файлы сертификата

Перед началом установки убедитесь, что у вас есть все необходимые файлы сертификата. После того как Центр сертификации подпишет ваш SSL-сертификат, он отправит установочные файлы на вашу почту. Вот что вам понадобится:

  • Ваш основной файл сертификата, выданный для доменного имени, которое вы хотите защитить.
  • Пакет CA (промежуточная цепочка сертификатов) от вашего Центра сертификации.
  • Ваш закрытый ключ.

Ваш SSL-сертификат и пакет CA приходят в ZIP-архиве, отправленном вам CA. Закрытый ключ — тот, который вы сгенерировали вместе с кодом CSR; он находится там же, где вы создавали CSR.

Последнее, что нужно проверить, — формат ваших файлов. ACM и IAM принимают только файлы в формате PEM, поэтому убедитесь, что ваш сертификат, цепочка и закрытый ключ представлены в формате PEM. PEM — это текстовый формат, который может иметь несколько расширений файлов (.pem, .key, .cer, .crt и другие); файл PEM начинается со строки вроде ——BEGIN CERTIFICATE——. Закрытый ключ должен быть незашифрованным: ACM отклоняет ключ, защищенный паролем или парольной фразой.

Если вы получили файлы в другом формате, например PFX/PKCS#12, сначала преобразуйте их в PEM. Это можно сделать с помощью команд OpenSSL. Как только ваши файлы будут в формате PEM, вы готовы к установке сертификата.

Установка SSL-сертификата в AWS Certificate Manager (ACM)

ACM — рекомендуемое место для хранения сертификатов для управляемых сервисов AWS. Вы можете импортировать сторонний сертификат через консоль или CLI.

Вариант A: импорт через консоль ACM

  1. Откройте консоль AWS и перейдите в раздел Certificate Manager. Убедитесь, что вы находитесь в правильном регионе (в правом верхнем углу). Импортируйте сертификат в том же регионе, что и сервис, который будет его использовать. Для CloudFront используйте US East (N. Virginia), us-east-1.
  2. Выберите Import certificate.
  3. В поле Certificate body вставьте ваш основной сертификат (блок, начинающийся с ——BEGIN CERTIFICATE——).
  4. В поле Certificate private key вставьте ваш незашифрованный закрытый ключ (блок, начинающийся с ——BEGIN PRIVATE KEY—— или ——BEGIN RSA PRIVATE KEY——).
  5. В поле Certificate chain вставьте ваш пакет CA (промежуточные сертификаты).
  6. Нажмите Next, добавьте при необходимости теги, затем нажмите Import.

Вариант B: импорт через AWS CLI

Выполните команду ниже, чтобы загрузить ваш сертификат в ACM. Обратите внимание на префикс fileb://: он указывает CLI считывать каждый файл как необработанные байты, что и требуется ACM.

aws acm import-certificate 
  --certificate fileb://example.crt 
  --private-key fileb://example.key 
  --certificate-chain fileb://example-bundle.crt

Примечание: замените каждое имя файла example на фактическое имя вашего файла. Если импорт прошел успешно, CLI вернет ARN сертификата (Amazon Resource Name). Этот идентификатор понадобится вам для привязки сертификата к сервису. Вот полный список команд ACM для дальнейшего управления сертификатом.

Важные предостережения:

  • Импортированные сертификаты не продлеваются автоматически. ACM автоматически продлевает только те сертификаты, которые он сам выпускает. Вы несете ответственность за отслеживание срока действия импортированного сертификата и повторный импорт нового до истечения срока (AWS рекомендует делать это не менее чем за 24 часа до истечения). Повторный импорт в тот же сертификат ACM сохраняет существующие привязки к сервисам, поэтому балансировщик нагрузки или дистрибутив продолжает использовать его без дополнительных изменений.
  • Регион имеет значение. Сертификат ACM привязан к региону. Импортируйте его в том же регионе, что и балансировщик нагрузки или сервис, который будет его использовать. CloudFront принимает сертификаты только из региона us-east-1.

Установка SSL-сертификата в AWS IAM (устаревший способ)

Хранилище сертификатов IAM — это более старый метод, и AWS рекомендует использовать ACM для новых развертываний. Используйте IAM только в тех случаях, когда сервис или регион не поддерживает ACM, или когда вам конкретно требуется хранилище IAM (например, для некоторых настроек CloudFront, где путь должен начинаться с /cloudfront/). Загрузите сертификат в IAM с помощью команды:

aws iam upload-server-certificate 
  --server-certificate-name certificate-name 
  --certificate-body file://example.crt 
  --certificate-chain file://example-bundle.crt 
  --private-key file://example.key

Замените значения, как показано ниже:

  • —server-certificate-name: произвольное название, которое легко запомнить, например ваше доменное имя. Используйте только буквенно-цифровые символы верхнего и нижнего регистра; пробелы не допускаются.
  • —certificate-body: имя файла вашего основного SSL-сертификата.
  • —certificate-chain: имя файла вашего пакета CA.
  • —private-key: имя файла вашего закрытого ключа.

Сертификат, закрытый ключ и цепочка должны быть в формате PEM, а закрытый ключ должен соответствовать сертификату. Если загрузка прошла успешно, CLI вернет метаданные серверного сертификата, включая его путь, имя, ID, ARN, дату загрузки и дату истечения срока действия. Для получения дополнительной помощи по управлению SSL и устранению неполадок обратитесь к официальному руководству Amazon.

Привязка сертификата в ELB (Elastic Load Balancing)

Импорт сертификата в ACM или IAM еще не означает, что он используется. Сертификат становится активным только тогда, когда вы привязываете его ARN к сервису. В этом разделе предполагается, что вы уже импортировали сертификат и хотите создать или обновить HTTPS-прослушиватели на существующем балансировщике нагрузки. Вам понадобятся ARN вашего сертификата и имя или ARN балансировщика нагрузки.

Classic Load Balancer

Используйте команду ниже, чтобы создать HTTPS-прослушиватель на Classic Load Balancer и назначить ему сертификат:

aws elb create-load-balancer-listeners 
  --load-balancer-name my-load-balancer 
  --listeners "Protocol=HTTPS,LoadBalancerPort=443,InstanceProtocol=HTTP,InstancePort=80,SSLCertificateId=ARN"

Замените ARN на ARN вашего сертификата из ACM или IAM. Если у вас уже есть HTTPS-прослушиватель и вы хотите просто заменить сертификат на новый, используйте:

aws elb set-load-balancer-listener-ssl-certificate 
  --load-balancer-name my-load-balancer 
  --load-balancer-port 443 
  --ssl-certificate-id NewARN

Замените NewARN на ARN нового сертификата. Вот полный набор команд ELB, а также официальное руководство Amazon по HTTPS-прослушивателям для Classic Load Balancer.

Application Load Balancer

Выполните следующую команду, чтобы создать HTTPS-прослушиватель на Application Load Balancer. Значение —ssl-policy ниже выбирает политику безопасности, поддерживающую TLS 1.3 и TLS 1.2:

aws elbv2 create-listener 
  --load-balancer-arn my-load-balancer-arn 
  --protocol HTTPS 
  --port 443 
  --certificates CertificateArn=my-certificate-arn 
  --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 
  --default-actions Type=forward,TargetGroupArn=my-target-group-arn

Значения my-load-balancer-arn и my-target-group-arn можно найти, выполнив команду:

aws elbv2 describe-target-groups

Она отобразит соответствующие балансировщики нагрузки и целевые группы в вашем аккаунте. Чтобы добавить новый сертификат к существующему HTTPS-прослушивателю, используйте:

aws elbv2 modify-listener 
  --listener-arn my-https-listener-arn 
  --certificates CertificateArn=my-new-certificate-arn

Значение my-https-listener-arn можно найти с помощью:

aws elbv2 describe-listeners 
  --load-balancer-arn my-load-balancer-arn

Смотрите справочник команд elbv2 для дальнейшего управления вашим Application Load Balancer.

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

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

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

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

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

Где устанавливается SSL-сертификат в AWS?

Вы не устанавливаете его на отдельный сервер. Вы импортируете сертификат в AWS Certificate Manager (ACM), а затем привязываете полученный ARN к управляемому сервису, который завершает TLS-соединение, например, Application или Classic Load Balancer, дистрибутиву CloudFront или пользовательскому домену API Gateway.

Продлевает ли ACM импортированный сертификат автоматически?

Нет. ACM автоматически продлевает только те сертификаты, которые он сам выпускает. Импортированный сторонний сертификат необходимо переиздать и повторно импортировать до истечения срока его действия. Повторный импорт в тот же сертификат ACM сохраняет его привязки к сервисам, поэтому балансировщик нагрузки продолжает обслуживать обновленный сертификат без дополнительных изменений.

Что использовать: ACM или хранилище сертификатов IAM?

Используйте ACM. Хранилище сертификатов IAM — это устаревший метод, который AWS сохраняет в основном для обратной совместимости и для случаев, не охватываемых ACM. Для большинства конфигураций, включая балансировщики нагрузки и CloudFront, рекомендуемым вариантом является ACM.

Почему ACM отклоняет мой закрытый ключ?

Самая распространенная причина заключается в том, что ключ зашифрован. ACM принимает только незашифрованный закрытый ключ в формате PEM, соответствующий сертификату. Сначала удалите парольную фразу, затем выполните импорт. Убедитесь, что все три части (сертификат, цепочка и ключ) представлены в формате PEM.

В какой регион следует импортировать сертификат?

Импортируйте его в том же регионе, что и балансировщик нагрузки или сервис, который будет его использовать, поскольку сертификаты ACM привязаны к региону. Исключением является CloudFront: он принимает только сертификаты, импортированные в регион US East (N. Virginia), us-east-1.

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

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

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

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