В этом руководстве вы узнаете, как установить 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
- Откройте консоль AWS и перейдите в раздел Certificate Manager. Убедитесь, что вы находитесь в правильном регионе (в правом верхнем углу). Импортируйте сертификат в том же регионе, что и сервис, который будет его использовать. Для CloudFront используйте US East (N. Virginia), us-east-1.
- Выберите Import certificate.
- В поле Certificate body вставьте ваш основной сертификат (блок, начинающийся с ——BEGIN CERTIFICATE——).
- В поле Certificate private key вставьте ваш незашифрованный закрытый ключ (блок, начинающийся с ——BEGIN PRIVATE KEY—— или ——BEGIN RSA PRIVATE KEY——).
- В поле Certificate chain вставьте ваш пакет CA (промежуточные сертификаты).
- Нажмите 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 и что вы проверяете правильный регион и конечную точку.
Часто задаваемые вопросы
Вы не устанавливаете его на отдельный сервер. Вы импортируете сертификат в AWS Certificate Manager (ACM), а затем привязываете полученный ARN к управляемому сервису, который завершает TLS-соединение, например, Application или Classic Load Balancer, дистрибутиву CloudFront или пользовательскому домену API Gateway.
Нет. ACM автоматически продлевает только те сертификаты, которые он сам выпускает. Импортированный сторонний сертификат необходимо переиздать и повторно импортировать до истечения срока его действия. Повторный импорт в тот же сертификат ACM сохраняет его привязки к сервисам, поэтому балансировщик нагрузки продолжает обслуживать обновленный сертификат без дополнительных изменений.
Используйте ACM. Хранилище сертификатов IAM — это устаревший метод, который AWS сохраняет в основном для обратной совместимости и для случаев, не охватываемых ACM. Для большинства конфигураций, включая балансировщики нагрузки и CloudFront, рекомендуемым вариантом является ACM.
Самая распространенная причина заключается в том, что ключ зашифрован. ACM принимает только незашифрованный закрытый ключ в формате PEM, соответствующий сертификату. Сначала удалите парольную фразу, затем выполните импорт. Убедитесь, что все три части (сертификат, цепочка и ключ) представлены в формате PEM.
Импортируйте его в том же регионе, что и балансировщик нагрузки или сервис, который будет его использовать, поскольку сертификаты ACM привязаны к региону. Исключением является CloudFront: он принимает только сертификаты, импортированные в регион US East (N. Virginia), us-east-1.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


