bg-tutorials

如何在AWS中安装SSL证书

在本教程中,您将学习如何在 AWS(Amazon Web Services)中安装 SSL 证书。在 AWS 上,您不会像在 Apache 或 Nginx 中那样在单台服务器上安装证书。相反,您需要先将证书导入证书存储库一次,然后将其附加到某个托管服务(负载均衡器、CloudFront 或 API Gateway)上,由该服务为您终止 TLS 连接。本指南涵盖了 AWS Certificate Manager(ACM)、旧版 IAM 证书存储以及 Elastic Load Balancing(ELB)。

在安装之前,您需要生成证书签名请求(CSR)并将其发送给证书颁发机构进行审批。如果您尚未完成此步骤,请先阅读本教程的第一部分。如果您已经拥有 SSL 证书文件,可以直接跳到下面的安装指南。

如何在 AWS 中生成 CSR 代码

申请 SSL 证书时,一个必不可少的步骤是将 CSR 代码提交给您的 SSL 提供商,也称为证书颁发机构。CSR 包含关于您的域名和组织的编码信息。如果不提供这段代码,您将无法获得已签名的 SSL 证书。您有两个选择:

  • 使用我们的CSR 生成器自动创建 CSR。
  • 手动生成 CSR。最佳做法是在运行 SSL 证书的同一台服务器上创建 CSR。请根据您的平台选择相应教程:

如果您只有负载均衡器而没有可以运行命令的源服务器,可以使用 OpenSSL 工具创建 CSR 和私钥:

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 压缩包中。私钥则是您在生成 CSR 代码时同时创建的那个文件;它保存在您创建 CSR 的同一位置。

最后一件要检查的事情是文件格式。ACM 和 IAM 只接受 PEM 编码的文件,因此请确保您的证书、证书链和私钥都是 PEM 格式。PEM 是一种文本格式,可以有多种文件扩展名(.pem、.key、.cer、.crt 等);PEM 文件以 —–BEGIN CERTIFICATE—– 这样的行开头。私钥必须是未加密的:ACM 会拒绝受密码或口令保护的密钥。

如果您收到的文件是其他格式,例如 PFX/PKCS#12,请先将其转换为 PEM 格式。您可以使用 OpenSSL 命令来完成此操作。文件转换为 PEM 格式后,您就可以安装证书了。

在 AWS Certificate Manager(ACM)中安装 SSL 证书

ACM 是为 AWS 托管服务存储证书的推荐位置。您可以通过控制台或 CLI 导入第三方证书。

方式 A:在 ACM 控制台中导入

  1. 打开 AWS 控制台,进入 Certificate Manager。确认您所在的区域正确(右上角)。请在将要使用该证书的服务所在的同一区域导入证书。若用于 CloudFront,请使用 US East (N. Virginia), us-east-1。
  2. 选择导入证书。
  3. 在证书正文处,粘贴您的主证书(以 —–BEGIN CERTIFICATE—– 开头的代码块)。
  4. 在证书私钥处,粘贴您未加密的私钥(以 —–BEGIN PRIVATE KEY—– 或 —–BEGIN RSA PRIVATE KEY—– 开头的代码块)。
  5. 在证书链处,粘贴您的 CA 捆绑包(中间证书)。
  6. 选择下一步,添加任何标签,然后选择导入。

方式 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 资源名称)。您需要此标识符将证书附加到某个服务上。以下是用于进一步管理证书的完整 ACM 命令列表。

重要注意事项:

  • 导入的证书不会自动续订。ACM 只会自动续订它自己颁发的证书。您需要自行追踪已导入证书的到期日期,并在到期前重新导入新证书(AWS 建议至少在到期前 24 小时完成)。重新导入到同一个 ACM 证书中会保留现有的服务关联关系,因此负载均衡器或分发实例会继续使用它,无需进一步更改。
  • 区域很重要。ACM 证书是区域性的。请在将要使用该证书的负载均衡器或服务所在的同一区域导入证书。CloudFront 只接受来自 us-east-1 的证书。

在 AWS IAM 中安装 SSL 证书(旧版方法)

IAM 证书存储是较早的方法,AWS 建议新部署使用 ACM。仅在某个服务或区域不支持 ACM,或者您特别需要使用 IAM 存储时(例如某些 CloudFront 配置,路径必须以 /cloudfront/ 开头),才使用 IAM。使用以下命令将证书上传到 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

使用以下命令在 Classic Load Balancer 上创建 HTTPS 监听器并为其分配证书:

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

将 ARN 替换为您在 ACM 或 IAM 中获得的证书 ARN。如果您已经有一个 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 命令的完整列表,以及关于 Classic Load Balancer 的 HTTPS 监听器的 Amazon 官方指南。

Application Load Balancer

运行以下命令在 Application Load Balancer 上创建 HTTPS 监听器。下面的 –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

如需进一步管理您的 Application Load Balancer,请参阅 elbv2 命令参考。

测试您的 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 中,我应该在哪里安装 SSL 证书?

您不会将其安装在单台服务器上。您需要将证书导入 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 的证书。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.