AWS 是亚马逊提供的云计算服务,为个人、企业、政府与商业实体提供按需云平台。其提供的服务之一是 EC2 云(Elastic Compute Cloud,弹性计算云),它允许用户通过互联网访问一个虚拟的计算机网络。

本文清晰梳理在 EC2 上安装 SSL 证书的流程,并涵盖如何测试 SSL 配置以及排查常见问题,助你确保从始至终一切顺畅运行。

生成证书签名请求(CSR)

要在 AWS EC2 实例上开始安装 SSL,首先生成证书签名请求(CSR,Certificate Signing Request)。证书颁发机构需要你的域名与组织的基本信息才能签发证书。

如何生成 CSR?

你可以直接在将安装 SSL 证书的 EC2 实例上创建 CSR,这样私钥将保留在服务器上,符合安全最佳实践。或者,你也可以使用外部 CSR 生成器手动生成 CSR,不过这种方法安全性较低。如果你使用 OpenSSL(常见于基于 Linux 的实例),在终端运行以下命令:

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

该命令将生成两个文件:

  • yourdomain.key——你的私钥(务必妥善保管,切勿共享)。
  • yourdomain.csr——你的证书签名请求(需提交给 CA)。

注意:生成 CSR 后,别忘了复制并保存你所收到的代码块——稍后在激活 SSL 证书时会用到它。

在 EC2 上安装 SSL 证书的前置条件

在开始在 AWS EC2 实例上安装 SSL 证书之前,请确保已备好以下文件:

  • SSL 证书文件(服务器证书):这是由证书颁发机构(CA)为你的域名签发的主证书,通常通过邮件提供,或可经证书服务商控制台下载,有时标记为 yourdomain.crt 或类似名称。
  • 中间证书(Intermediate Certificate):这些是支撑性证书,用于在服务器证书与浏览器认可的根证书之间建立信任链,通常打包在一个名为 CA Bundle 的文件中,包含在证书 ZIP 包里,或从 CA 的代码库下载。
  • 私钥文件:与证书关联的私钥。当你在服务器或使用外部工具生成 CSR 时,私钥随之创建。你应安全访问该文件,因为它对安装至关重要且无法从证书文件中找回;若丢失,需新建 CSR 并重新签发证书。

将证书文件转换为 PEM 格式

AWS 要求证书文件为 PEM 格式以便正确安装。PEM(Privacy Enhanced Mail)是一种 base64 编码格式,包裹在 -----BEGIN----- 与 -----END----- 行之间,通常扩展名为 .crt、.pem 或 .key。

转换方法:

  • 方法一:使用 OpenSSL(推荐)。你可手动用 OpenSSL 命令行工具将证书文件转换为 PEM 格式,例如:openssl x509 -in yourdomain.crt -out yourdomain.pem -outform PEM,该命令将 X.509 证书转换为 PEM 格式;若证书为 .der、.pfx 或 .p7b 格式,则需根据源格式使用不同命令。
  • 方法二:使用在线 SSL 转换工具。若你偏爱更快的方法,一些受信任的在线工具可让你轻松将证书文件转换为 PEM 格式,只需上传文件并下载 PEM 版本即可。重要提示:切勿将私钥上传至在线工具,.key 文件只应使用手动转换以避免安全风险。

一旦你的证书、中间证书与私钥均为 PEM 格式,即可在 EC2 实例上继续安装。

在 AWS EC2 实例上安装 SSL 证书的步骤

说明:本指南演示如何使用 AWS 应用负载均衡器(ALB,Application Load Balancer)来管理 SSL,EC2 实例在其后方提供流量。

前置条件

  • 正在运行的 Amazon EC2 实例(Ubuntu、CentOS 或 Amazon Linux)。
  • 指向 EC2 实例公网 IP 的域名。
  • 你的 PEM 格式 SSL 证书文件:yourdomain.crt(证书)、yourdomain.key(私钥)、ca_bundle.crt(CA 链,通常由立海世纪提供)。
  • 具有 sudo 权限的 SSH 访问。

第 1 步:登录 AWS 管理控制台

  • 前往 AWS 管理控制台。
  • 导航至 EC2 控制台。
  • 在左侧菜单中展开"负载均衡"(Load Balancing)部分并点击"负载均衡器"(Load Balancers)。

第 2 步:在负载均衡器上配置 HTTPS 监听器

  • 在负载均衡器部分,选择与你 EC2 实例关联的负载均衡器。
  • 点击"监听器"(Listeners)标签。
  • 选择"编辑"(Edit),然后"添加监听器"(Add listener)。
  • 选择 HTTPS 作为协议。
  • 在 SSL 证书字段中,点击"更改"(Change)。

第 3 步:将 SSL 证书上传至 IAM

  • 点击"将新的 SSL 证书上传至 AWS 身份与访问管理(IAM)"。
  • 为证书输入一个名称(便于管理)。
  • 粘贴:私钥到"私钥"(Private Key)字段(yourdomain.key)、证书到"公钥证书"(Public Key Certificate)字段(yourdomain.crt)、CA 包到"证书链"(Certificate Chain)字段(ca_bundle.crt)。
  • 确保粘贴完整的证书链,包括 -----BEGIN CERTIFICATE----- 与 -----END CERTIFICATE----- 标记。

第 4 步:将 SSL 证书绑定到负载均衡器

  • 上传证书至 IAM 后,点击"保存"(Save)以完成上传。
  • 返回负载均衡器的"监听器"标签。
  • 从下拉列表中选择已上传的证书,并将其应用到 HTTPS 监听器。
  • 保存对负载均衡器的更改。

第 5 步:维护与续费你的 SSL(推荐)

与所有数字证书一样,SSL 证书也会过期(通常每 13 个月)。按时续费 SSL 证书以维持安全加密并避免浏览器警告。建议遵循以下最佳实践:提前设置续费日历提醒;获取续费证书并上传至 IAM;按第 3、4 步所示重新绑定到负载均衡器。

快速提示:确保你的 EC2 安全组允许端口 443(HTTPS)的入站流量;由于 SSL 在负载均衡器处终止,EC2 实例只需提供 HTTP 即可;可使用 Amazon CloudFront 或其他缓存服务为全球访客加速站点性能。

测试你的 SSL 证书

流程结束后,检查并测试 SSL 证书是否已正确配置并按预期运行是良好的实践。检查方法:访问你的站点 https://yourdomain.com;可使用免费的 SSL 检测工具验证:没有浏览器安全警告、证书有效且信任链被正确识别、所有页面 HTTPS 均正常加载、确认证书是为你的域名签发且完整证书链被正确识别无误。

排查常见 SSL 问题

若 SSL 证书未如预期工作,以下是几个常见问题及修复方法:

  • 浏览器显示"不安全"警告:这通常意味着缺少中间证书。修复方法是向证书服务商下载 CA 包,并用以下命令与域名证书合并:cat your_domain.crt intermediate.crt > fullchain.pem,将合并后的 PEM 文件上传至 EC2 服务器或负载均衡器。
  • 证书格式错误:文件应为 PEM 格式,其他格式在 AWS 中不可用;私钥应以 -----BEGIN PRIVATE KEY----- 或 -----BEGIN RSA PRIVATE KEY----- 开头。若私钥为 PKCS#1 且需转换为 PKCS#8,使用命令:openssl rsa -in oldkey.pem -out newkey.pem。
  • 域名不匹配错误:若通过 IP 或证书中未列出的域名访问站点会发生此问题,应始终使用 SSL 签发所用的确切域名。
  • HTTPS 下站点无法加载:检查 EC2 实例是否运行、EC2 安全组是否开放 443 端口、负载均衡器监听器是否配置正确。
  • 协议或版本错误:旧的 SSL/TLS 版本通常被屏蔽,确保你的服务器支持 TLS 1.2 或更高版本,并禁用 SSLv3、TLS 1.0 等已弃用版本。
  • HTTPS 下 403 Forbidden:可能是服务器配置错误或缺少 SSL 专属设置,请检查 Web 服务器的 HTTPS 配置与权限,确保 HTTPS 虚拟主机配置正确并指向正确目录,并检查 Web 根目录的文件与目录权限。

仍无法解决?检查服务器日志:Nginx 为 /var/log/nginx/error.log,Apache 为 /var/log/httpd/error_log;或联系 AWS 支持与你的 SSL 服务商寻求帮助。

结语

在 AWS EC2 实例上安装 SSL 证书是保护 Web 应用的重要一步。从生成 CSR 到为服务器配置 HTTPS,流程的每一部分都有助于保护用户与站点之间的数据,使其私密且受保护。一旦正确完成所有配置,你的站点便能承载安全流量、建立用户信任并满足现代安全标准。此外,别忘了监控证书到期日期并定期测试 SSL 配置,以便及时发现问题。