1.
准备与前提(必读)
- 检查事项:已有阿里云账号、香港 ECS 或负载均衡(SLB)实例、所用域名已在阿里云 DNS 控制台管理或可修改 DNS 解析。
- 权限:需要阿里云账号具有 DNS 管理权限(控制台或 API),或获取 AccessKey/AccessSecret。
- 软件/工具:服务器上建议安装 openssl、curl、acme.sh(如使用 Let’s Encrypt 或 acme.sh 自动申请)、nginx/apache 等。
2.
生成 CSR 与私钥(在本机或服务器)
- 命令(RSA 2048):openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=Example/OU=IT/CN=www.example.com"
- 说明:domain.key 保存在安全位置,domain.csr 提交给 CA;若使用 acme.sh 可跳过 CSR 手动生成步骤。
- 多域名/泛域名:多域名(SAN)请在 CSR 或申请界面填写多个域名,泛域名需使用 DNS 验证。
3.
在阿里云(或第三方 CA)申请或上传证书
- 阿里云证书服务:登录阿里云控制台 -> 证书管理 -> 申请证书,选择 RSA 或 ECC,选择验证方式(域名验证:DNS 或文件验证)。
- 如果使用第三方 CA:在 CA 网站提交 CSR 并完成域名验证后下载证书(通常包括证书 .crt 与链证书)。
- 上传:若证书已在本地,阿里云支持上传证书到证书管理或直接在 SLB/SSL 终端绑定上传。
4.
通过 DNS 验证(推荐用于自动化)
- 手动验证:申请时选择 DNS 验证,会给出一条 TXT 记录,登录阿里云 DNS 控制台 -> 解析设置 -> 添加 TXT,填写主机记录与值,等待生效后在 CA 控制台确认。
- 自动化(强烈推荐):使用 acme.sh + 阿里云 DNS API 自动创建/删除 TXT 记录。需要在服务器环境设置环境变量:export Ali_Key="你的AccessKeyID" export Ali_Secret="你的AccessKeySecret"。
- acme.sh 示例:acme.sh --issue --dns dns_ali -d example.com -d '*.example.com'(泛域名需要 DNS 验证)。
5.
把证书部署到香港 ECS(Nginx 示例)
- 复制证书:将证书文件(fullchain.cer)和私钥(domain.key)放到 /etc/nginx/ssl/(建议权限 600)。
- Nginx 配置示例:
ssl_certificate /etc/nginx/ssl/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM";
- 重载 Nginx:nginx -t && systemctl reload nginx。若使用 Apache 或其他软件,按相应方式配置证书路径并重启服务。
6.
在阿里云 DNS 控制台配置域名解析(绑定到香港 ECS)
- 添加记录:登录域名的解析管理,添加 A 记录(主机记录:www 或 @)指向香港 ECS 的公网 IP,或添加 CNAME 指向负载均衡域名。
- TTL 设置:设置合理 TTL(如 600 秒)便于快速更新;如果需要频繁变更,可临时设置为 60-300。
- IPv6:若使用 IPv6 请添加 AAAA 记录。
7.
确保 DNS 与证书验证同步(关键步骤)
- 验证顺序:若使用 DNS 验证,先添加/自动创建 TXT 记录 -> 等待 DNS 生效(可用 dig 或 nslookup 验证)-> 在 CA 控制台完成验证或 acme.sh 会自动完成。
- dig 示例:dig txt _acme-challenge.example.com +short 或 nslookup -q=txt _acme-challenge.example.com。若返回值与 CA 提供的相符,验证通过。
- 等待时间:公网 DNS 解析通常几分钟到数小时,视 TTL 与 DNS 缓存而定。
8.
在负载均衡(SLB / ALB)或 CDN 上绑定证书
- SLB:进入负载均衡实例 -> 监听与证书管理 -> 上传或选择已有证书 -> 绑定到 HTTPS 监听端口。
- CDN:若使用阿里云 CDN,则在域名管理中配置 HTTPS,选择证书(自有证书或阿里云托管),并设置回源协议与强制 HTTPS。
- 注意回源:如果 CDN/SLB 终端启用 HTTPS,回源也应配置为 HTTPS 或配置回源证书信任策略。
9.
设置自动续期(避免证书过期)
- acme.sh 自动续期:acme.sh 默认会安装 crontab 任务自动续期并自动通过 DNS API 更新 TXT。确保存放 Ali_Key/Ali_Secret 的环境变量在 crontab 环境可用(通常写入 ~/.acme.sh/account.conf 或在 crontab 中 source 环境)。
- 手动续期检查:每月或每20天检查证书剩余有效期(openssl x509 -in fullchain.cer -noout -dates)。
- SLB/CDN 更新:若证书在本地自动更新,记得同步上传新证书到 SLB/CDN(可用脚本结合阿里云 SDK/API 自动上传)。
10.
验证与故障排查清单
- HTTPS 检查:浏览器访问 https://www.example.com,查看证书详情;使用 ssllabs(SSL Server Test)检测证书链与协议。
- 常见问题:1)DNS 未生效:检查是否在正确的域名服务商添加记录且 TTL 生效;2)防火墙/安全组:开放 443 端口;3)证书链错误:确保上传完整链(fullchain)。
- 实用命令:curl -vI https://www.example.com 查看握手;openssl s_client -connect example.com:443 -servername example.com 查看证书链与 SNI。
11.
最佳实践与安全建议
- 私钥安全:私钥权限设置为 600,仅限 root 或运行 web 进程的用户访问;定期备份并使用硬件安全模块(HSM)或 KMS 如需更高安全。
- 日志与监控:监控证书到期时间、DNS 解析变化与 HTTPS 可用性,配置报警(例如到期 30 天提醒)。
- 使用 CDN/加速:香港服务器面向海外访问良好,可结合 CDN 缓存与 WAF 提高稳定性和安全性。
12.
问:如何实现证书与阿里云 DNS 的自动同步更新(自动续期并自动修改 TXT)?
- 答:使用 acme.sh 并配置阿里云 DNS API。步骤:1)在阿里云控制台创建 RAM 用户并授权 DNS 管理权限或使用主账号 AccessKey;2)在服务器环境导出 Ali_Key(AccessKeyID)和 Ali_Secret(AccessKeySecret);3)安装 acme.sh 并运行 acme.sh --issue --dns dns_ali -d example.com(或带泛域名);4)acme.sh 会通过阿里云 API 自动创建/删除 _acme-challenge TXT 记录并完成证书申请与续期。
13.
问:证书绑定后域名解析没有生效,常见排查步骤是什么?
- 答:检查顺序:1)确认域名解析记录指向正确 IP(dig A/CNAME);2)检查解析是否生效(TTL、解析链路);3)确认安全组/防火墙已开放 80/443 端口;4)查看 Nginx/Apache 是否加载了正确证书路径并重载成功;5)若使用 SLB/CDN,确认证书已在 SLB/CDN 控制台绑定并回源配置正确。
14.
问:在阿里云香港服务器绑定证书时有哪些特别注意事项?
- 答:注意点:1)香港无需大陆 ICP 备案,但面向大陆用户可能受限制;2)网络延迟与带宽选择应根据目标访问地域(香港节点对海外访问更优);3)若使用泛域名证书必须使用 DNS 验证并配置好阿里云 DNS API;4)确保证书与域名的 SNI 配置正确,尤其在托管多个站点时。
来源:如何绑定证书与阿里云香港服务器域名dns同步更新