1.
准备工作与前提
- 确认每台服务器有公网IP(建议固定IP),并记录对应机房/带宽信息。
- 选择支持GeoDNS/Failover/较低TTL的DNS服务商(如Cloudflare、DNSPod、阿里云DNS、NS1)。
- 确认访问控制、SSH密钥、Ansible/rsync等自动化工具可用用于证书分发。
2.
DNS基本配置:多A记录与负载分配
- 在域名管理控制台添加多条A记录:example.com A 1.1.1.1,example.com A 2.2.2.2,www CNAME -> example.com。
- 若希望轮询负载,使用同名多A即可;若按地理或健康检查分配,启用GeoDNS或DNS负载均衡服务。
3.
TTL与故障切换策略
- TTL设置:正常运行时可设300-600s,快速故障切换设为60-120s。
- 搭配健康检查(DNS服务商提供或自建外部探测)自动移除异常IP,确保切换及时且不会造成缓存问题。
4.
反向DNS与RDNS注意
- 如果邮件或某些服务依赖反向解析,向IP提供商/云厂商申请设置PTR到相应主机名。
- 验证命令:dig -x 1.1.1.1 +short;确保正向与反向一致降低被拒风险。
5.
DNS安全性(DNSSEC 与 防篡改)
- 如果服务商支持,启用DNSSEC来防止缓存投毒;保存好DS记录并在注册商处上报。
- 在控制台启用账号二步、API Key限权管理,API用于自动化更新DNS记录。
6.
SSL证书获取:选择与申请流程
- 推荐使用Let’s Encrypt + ACME自动化:若需通配,使用DNS-01挑战(支持通配符);命令示例(cloudflare):
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.cloudflare-creds -d example.com -d *.example.com
- 若使用商业证书,生成CSR:openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr,并在CA处申请带必要SAN的证书。
7.
证书分发与自动化部署
- 获取到fullchain.pem和privkey.pem后,将证书分发到每台服务器:使用Ansible模板或rsync+ssh(示例):
scp fullchain.pem privkey.pem root@1.1.1.1:/etc/ssl/example.com/;重复到其它IP。
- 在Nginx/HAProxy上配置引用路径并重载服务(systemctl reload nginx)。
8.
证书续期与防止限额问题
- Let’s Encrypt证书有效期90天,建议30天自动续签:使用certbot renew定期任务或systemd timer。
- 如果使用DNS-01,请确保API凭证权限正确并测试手动续签;注意每周/每天限额策略,避免并发重复请求。
9.
HTTPS配置建议(SNI、OCSP、HTTP->HTTPS)
- 在服务器上启用SNI(现代Nginx/Apache默认支持),确保同一IP可托管多个域名证书。
- 配置OCSP Stapling提升TLS性能:在Nginx加入 ssl_stapling on; ssl_trusted_certificate /path/chain.pem; 并测试openssl s_client -connect host:443 -servername example.com -status。
10.
全面测试与监控
- DNS测试:dig @8.8.8.8 example.com A +short,检查返回多个IP且地理策略生效。
- SSL测试:使用SSL Labs(Qualys)或openssl s_client检查证书链、协议、弱密码。
- 监控:部署证书到期告警(Prometheus/Script+邮件),DNS解析健康监控。
11.
常见问题处理与排查命令
- DNS缓存问题:使用dig +trace检查链路;客户端缓存可用TTL等待或让用户flush DNS。
- 证书链问题:openssl verify -CAfile chain.pem fullchain.pem;若不完整,补齐中间链并重装。
12.
部署范例:从零到一的步骤清单
- 购买域名并接入选定DNS服务商;设置API Key并记录。
- 在DNS控制台添加多A及必要CNAME,设定TTL与Geo规则;保存。
- 在一台节点生成或申请证书(推荐DNS-01),下载fullchain/privkey。
- 自动化分发证书到所有节点并在Nginx/HAProxy上配置,重载并验证。
- 建立续期任务与DNS/证书监控告警。
13.
问:多IP站群是否必须使用通配符证书还是每台主机分别签发更好?
14.
答:推荐根据域名结构选择:若子域很多且同一域名下(*.example.com),使用DNS-01通配符证书便于管理;若域名或主机名各不相同,使用SAN证书或对每个主机分别签发并自动分发同样可行。通配符减少证书数量,但续签需DNS API权限。
15.
问:如何确保证书在多IP多机房中同步且不出现私钥泄露风险?
16.
答:使用受控自动化(Ansible/Vault、scp通过SSH key)分发并在传输时限制权限(600)。私钥存储在安全秘钥库(HashiCorp Vault)或受限控制节点,只允许自动化工具拉取,定期轮换API凭证并开启审计。
17.
问:DNS切换与证书更新同时发生会带来哪些风险,该如何避免?
18.
答:风险包括短时访问失败与证书与解析不一致导致部分节点被拒。避免方法:先完成证书申请并分发到所有后端节点,验证HTTPS后再调整DNS指向;使用低TTL和健康检查逐步切换,预先通知监控并在低峰时段操作。
来源:部署香港站群多ip时DNS配置与SSL证书管理的最佳实践总结