云和 CDN

阿里云 CDN 配置 HTTPS 证书

作者: · 最后核实

阿里云 CDN 的 HTTPS 在加速域名的“HTTPS 配置”里开启:先选证书,再设置强制跳转、HSTS、TLS 版本和 HTTPS 回源。自定义上传的证书不会自动续期,可以用 acme.sh 的 ali_cdn 钩子在每次续期后自动推送到 CDN。

示例加速域名是 cdn.example.com(或 www.example.com)。菜单名称以截至 2026 年 11 月的阿里云 CDN 控制台为准。

前提条件

开启 HTTPS 前,加速域名要已经能通过 HTTP 正常访问。

  • 已在阿里云 CDN 添加加速域名,CNAME 已指向 CDN 分配的地址,HTTP 访问正常。
  • 加速区域包含中国内地的,域名已完成 ICP 备案。
  • 一张覆盖该域名的证书:数字证书管理服务里的证书(见 阿里云 SSL 证书申请),或者自己的 PEM 证书和私钥(例如 acme.sh 签发的证书)。
  • 页面里没有写死的 http:// 资源。

第一步:打开 HTTPS 配置

在 CDN 控制台的域名管理页面找到加速域名,点 管理 → HTTPS 配置。在 HTTPS 证书一栏点“修改配置”,打开 HTTPS 安全加速开关。

第二步:选择证书来源

证书可以从数字证书管理服务里选,也可以自定义上传;前者在服务里续期后能同步到 CDN。

  • 数字证书管理服务证书:直接选择已签发的证书,证书在该服务里续期或替换后可以同步更新。
  • 自定义上传:证书一栏粘贴完整证书链(站点证书在前,中间证书在后),私钥一栏粘贴 PEM 格式私钥。

控制台还可能提供其他证书来源(例如免费证书),具体选项和额度以控制台为准。确认后提交,配置通常几分钟内在全网生效。

第三步:设置强制跳转、HSTS 和 TLS 版本

强制跳转、HSTS 和 TLS 版本都在同一个 HTTPS 配置页面里设置:

  • 强制跳转:选择 HTTP → HTTPS,跳转状态码选 301。
  • HSTS:确认全站 HTTPS 正常后再开启,过期时间先设短一些,原理见 开启 HSTS。
  • TLS 版本控制:只保留 TLSv1.2 和 TLSv1.3,除非必须兼容很老的客户端。
  • HTTP/2:建议开启。

第四步:设置 HTTPS 回源

在 回源配置 里把回源协议设为 HTTPS(或“协议跟随”),并确认源站在 443 端口有覆盖回源 Host 的有效证书。回源走 HTTP 时,源站不要再做 HTTP 跳转 HTTPS,否则会死循环。

验证

配置生效后,CDN 返回的证书颁发者和到期时间与你配置的证书一致,http:// 返回 301,开启 HSTS 后能看到对应响应头。用 SSL 证书检查 和 HSTS 检查 检查 CDN 域名,或在终端运行:

curl ssl.sh/cdn.example.com
curl -sI http://cdn.example.com | grep -iE '^(HTTP|location)'
curl -sI https://cdn.example.com | grep -i strict-transport-security

自动续期

CDN 不会替你续期自定义上传的证书。可选的自动化方式:

  • 证书来自数字证书管理服务的,在该服务里使用其自动续费/部署能力(是否可用以控制台为准)。
  • 证书来自 acme.sh 的,用自带的 ali_cdn 部署钩子,续期成功后自动推送到 CDN:
export Ali_Key="your-access-key-id"
export Ali_Secret="your-access-key-secret"
export DEPLOY_ALI_CDN_DOMAIN="cdn.example.com"
acme.sh --deploy -d example.com --deploy-hook ali_cdn

执行一次后 acme.sh 会记住部署钩子,以后每次续期都会自动运行。RAM 子账号需要 CDN 证书配置的权限(具体权限策略以阿里云文档为准)。2027 年 3 月 15 日起证书最长 100 天,手动上传容易漏掉,要改成自动推送,并把域名加到 ssl.sh 监控(开发中)。

常见问题排查

常见问题

CDN 和源站都要装证书吗?

访客看到的是 CDN 上的证书,必须配置。源站证书取决于回源协议:回源走 HTTP 时源站不需要证书,但 CDN 到源站这一段是明文;回源走 HTTPS 时源站也要有有效证书。推荐 HTTPS 回源。

开了强制跳转后出现“重定向次数过多”?

通常是 CDN 用 HTTP 回源,而源站(比如宝塔开了“强制 HTTPS”)又把请求跳回 HTTPS,形成死循环。二选一:关掉源站跳转只在 CDN 跳转,或者把回源协议改成 HTTPS/协议跟随。

用 Let's Encrypt 证书需要开 OCSP Stapling 吗?

不需要。Let's Encrypt 2025 年已停止 OCSP 服务,证书里没有 OCSP 地址,CDN 上的 OCSP Stapling 对它没有作用。商业 CA 的证书仍可按需开启。

资料来源

  1. 阿里云 CDN:如何在 CDN 上配置 SSL 证书实现 HTTPS 访问
  2. 阿里云 CDN 帮助文档
  3. 阿里云数字证书管理服务帮助文档
  4. acme.sh wiki: deploy hooks