Administrator
Administrator
发布于 2026-07-16 / 0 阅读
0
0

SSL

## 一、准备工作:获取 SSL 证书

无论采用哪种方案,都需要一份有效的 SSL 证书。腾讯云提供 免费证书 和付费证书,推荐使用托管在腾讯云 SSL 证书管理中的证书,方便 CDN 一键调用。

申请免费证书(以 TrustAsia 为例)

1. 登录 [腾讯云控制台](https://console.cloud.tencent.com/),进入 SSL 证书 控制台。

2. 点击 申请免费证书(每个主域名可申请 20 张,有效期 90 天,支持自动续期)。

3. 填写要绑定的域名(如 www.example.comexample.com),选择验证方式(推荐 DNS 验证,自动完成的话需要域名也托管在腾讯云 DNSPod)。

4. 完成验证后,证书状态变为“已签发”。

- 稍后在 CDN 配置中可直接从“腾讯云托管证书”中选用。

- 若需手动部署到服务器,可下载对应服务器类型的证书文件(Nginx、Apache 等)。

---

## 二、方案一:仅在 CDN 部署证书(源站保持 HTTP)

### 原理

用户与 CDN 边缘节点之间使用 HTTPS 加密通信,CDN 与源站(你的服务器)之间使用 HTTP 明文回源。

优点:服务器无需维护证书,配置简单,减轻源站计算压力。

缺点:CDN 到源站的数据未加密,存在被运营商或中间人截获的风险(一般通过专有网络或内网回源可缓解)。

适用场景:对安全性要求不是极端严格,或源站为对象存储(COS)、外部无法直接访问的 HTTP 服务。

### 操作步骤

#### 1. 配置 CDN 加速域名

1. 进入 CDN 控制台域名管理,点击 添加域名

2. 加速域名:填写需要开启 HTTPS 的域名,如 www.example.com

3. 源站配置

- 源站类型:选择“IP 源站”或“域名源站”,填写你服务器的 IP 地址已解析的域名

- 回源协议:选择 HTTP

- 端口:默认 80(可根据实际修改)。

4. 点击提交,等待 CDN 部署(约 5-10 分钟)。

#### 2. 在 CDN 上启用 HTTPS

1. 进入该域名的管理页面,找到 HTTPS 配置 模块。

2. 打开 HTTPS 配置开关

3. 证书来源:选择 腾讯云托管证书,然后在下拉列表中选择你之前申请的证书。

- 若证书不在列表中,选择“上传外部证书”并手动粘贴 PEM 和 KEY。

4. 回源协议:保持与源站配置一致,即 HTTP

(这里 CDN 节点与用户间是 HTTPS,与源站间是 HTTP。)

5. 可选配置:

- 强制 HTTPS:开启后,用户访问 HTTP 时会 301 跳转到 HTTPS。推荐开启。

- HTTP/2:开启可提升性能。

6. 保存配置,等待全网节点生效(约 5-10 分钟)。

#### 3. 域名解析指向 CDN

- 前往 DNS 解析控制台(如 DNSPod),将加速域名的 CNAME 记录指向 CDN 提供的 CNAME 地址(形如 www.example.com.cdn.dnsv1.com)。

- 若域名已在其他解析商,同理添加 CNAME 记录。

#### 4. 安全组放行端口

- 你的服务器安全组只需开放 80 端口(HTTP)供 CDN 节点回源即可。

- 无需在服务器上配置证书或开放 443 端口。

#### 验证效果

在浏览器输入 https://www.example.com,地址栏出现安全锁标志,表明 CDN 边缘节点成功提供了 HTTPS。此时源站的 HTTP 服务仍在正常运行,只是外部不可直接访问(除非你故意暴露)。

---

## 三、方案二:CDN 与服务器均部署证书(全链路 HTTPS)

### 原理

用户 → CDN(HTTPS)→ 源站(HTTPS),整条链路加密。

优点:数据全程加密,防窃听、防篡改,安全性最高。

缺点:服务器需要配置 SSL 证书,略微增加 CPU 开销和运维成本。

适用场景:涉及用户隐私、支付等敏感数据的网站,或企业合规性要求。

### 操作步骤

#### 第一步:在源站服务器上部署 SSL 证书

这里以最常见的 Nginx 为例,其他 Web 服务器(Apache、IIS、Caddy)思路类似。

1. 下载证书文件

在 SSL 证书控制台,找到已签发的证书,点击“下载”,选择 Nginx。解压后得到两个文件:

- xxx.crt(证书文件)

- xxx.key(私钥文件)

2. 上传文件至服务器

将两个文件上传到服务器安全目录,例如:

```bash

/etc/nginx/ssl/www.example.com.crt

/etc/nginx/ssl/www.example.com.key

```

3. 配置 Nginx

编辑对应站点的配置文件(通常在 /etc/nginx/conf.d//etc/nginx/sites-available/),添加 443 端口监听:

```nginx

server {

listen 443 ssl http2;

server_name www.example.com;

ssl_certificate /etc/nginx/ssl/www.example.com.crt;

ssl_certificate_key /etc/nginx/ssl/www.example.com.key;

# 推荐的 SSL 协议与加密套件

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;

ssl_prefer_server_ciphers on;

# 其他如 root、index、location 等不变

root /var/www/html;

index index.html;

}

# 可选:将 HTTP 重定向到 HTTPS

server {

listen 80;

server_name www.example.com;

return 301 https://$host$request_uri;

}

```

配置后执行 nginx -t 检查语法,然后 systemctl reload nginx 重新加载。

4. 安全组开放 443 端口

在云服务器控制台的安全组中,增加一条 入站规则:协议 TCP,端口 443,来源 0.0.0.0/0(或指定 CDN 回源 IP 段以提高安全性)。

5. 验证源站 HTTPS

在本地使用 curl -I https://你的服务器IP 或浏览器直接访问 https://你的服务器IP(注意会提示证书不匹配,这是正常的,只要显示“连接已加密”即可,因为证书绑定的是域名)。正确做法是用域名指向服务器 IP 后测试,或修改本地 hosts 文件模拟。

#### 第二步:配置 CDN 全链路 HTTPS

1. 进入 CDN 域名管理(若已添加域名可编辑,未添加则新建)。

2. 修改源站配置

- 回源协议:选择 HTTPS

- 源站端口:443(默认)。

3. 在 HTTPS 配置中打开开关,选择与之前相同的证书(腾讯云托管或上传)。

- 回源协议:同样选择 HTTPS,此时 CDN 节点回源时会通过 HTTPS 连接你的服务器。

4. 可选:开启 强制 HTTPSHTTP/2

5. 保存配置,等待下发。

#### 第三步:域名解析与验证

- 同样将域名 CNAME 到 CDN 提供的地址。

- 浏览器访问 https://www.example.com,检查证书层级:一般显示腾讯云 CDN 的中间证书。全链路加密已建立。

进阶安全:可在 CDN 的“回源配置”中开启“回源 SNI”并填入服务器域名,避免服务器上有多个 SSL 站点时匹配错误。同时建议设置“回源鉴权”功能,防止源站被绕过 CDN 直接访问。

---

## 四、两种方案对比与选择

| 对比维度 | 仅在 CDN 部署证书 | CDN + 源站均部署证书 |

|----------|------------------|---------------------|

| 服务器配置 | 无需配置 SSL,只需提供 HTTP 服务 | 需要安装并配置证书,维护自动更新 |

| 加密范围 | 用户 ↔ CDN 加密,CDN ↔ 源站明文 | 全链路加密,无明文环节 |

| 安全性 | 较低,回源流量可能被监听 | 很高,端到端加密 |

| 性能 | 源站无需 SSL 握手,略省 CPU | 源站额外消耗 SSL 计算资源 |

| 证书管理 | 仅在 CDN 中维护,腾讯云可自动续期 | 需在服务器上更新证书文件 |

| 推荐场景 | 内部系统、静态资源、对象存储源站 | 电商、金融、需要合规的用户数据站点 |

---

## 五、常见问题与排错

1. CDN 开启 HTTPS 后网站访问仍显示不安全的 HTTP

- 检查是否开启了 强制 HTTPS,否则用户需手动输入 https://。建议开启强制跳转。

- 域名解析的 CNAME 记录是否正确指向 CDN 地址?等待 DNS 缓存刷新。

2. CDN 与源站全链路 HTTPS 时,返回 502 或证书错误

- 检查源站 Nginx 是否正确监听 443,且安全组已放行。

- CDN 回源协议为 HTTPS 时,源站证书需绑定正确的域名(CDN 会携带 SNI,若源站返回默认证书或证书不匹配,可能握手失败)。

- 在 CDN 的“回源配置”中,正确填写“回源 SNI”为你的域名。

- 若源站证书为自签名,CDN 不会信任,需使用受信任的证书(腾讯云免费证书即可)。

3. 证书到期后如何更新

- 仅 CDN 部署:免费证书在 SSL 控制台开启自动续期后,CDN 会自动拉取新证书,无需额外操作。

- 源站手动部署:需要重新下载新证书并替换服务器文件,重载 Web 服务。可考虑使用自动化工具(如 acme.sh 配合腾讯云 DNS API)自动续期并部署。

4. 如何验证回源是否走 HTTPS?

- 在源站 Nginx 访问日志中查看请求行,CDN 回源请求会带有 cloud-load-balancer 等头部,且访问日志会记录 443 端口的请求。

- 临时关闭服务器的 80 端口,若网站仍能正常访问,说明回源走的是 HTTPS。


评论