更换托管服务商或把网站迁到新服务器,主要涉及文件、数据库和 DNS,而证书往往在最后一刻才被想起。接着 DNS 切换完成,访客看到证书警告;或者一切看起来都正常,直到几周后续期悄悄失败,因为新服务器从未设置过续期。了解如何把 SSL 证书迁移到新服务器,以及是否真有必要迁移,才能让 HTTPS 在切换过程中持续可用。
将 SSL 证书迁移到新服务器的两种方式
有两种选择,对大多数网站来说第一种更简单。
- 在新服务器上签发新证书。使用 Let's Encrypt 等 ACME 证书颁发机构时,新服务器自己申请证书并设置自己的续期。无需复制任何东西,旧服务器上的证书到期即可。
- 转移 SSL 证书(已有的证书)。这适用于还有剩余有效期的付费证书,或新服务器必须先提供 HTTPS、之后才能验证域名的情况。您需要三样东西:证书、中间证书链,以及与它们配套的私钥。
证书绑定的是域名,而不是服务器或托管公司,所以只要私钥一同带过去,更换托管后的 SSL 证书依然有效。没有私钥,证书就毫无用处,而这正是大多数转移出错的地方:私钥留在了已被注销的服务器上。大多数商业证书颁发机构允许在有效期内用新密钥重新签发,所以如果旧密钥已丢失,请查看您的证书颁发机构的条款。
处理私钥
请通过 SSH 或 SFTP 复制私钥,绝不要通过邮件或聊天,并确保只有 root 和 Web 服务器可读。在 Windows 服务器上,证书和私钥通常一起放在受密码保护的 PFX 文件中,只有在安装证书时将私钥标记为可导出,才能导出该文件。
切换难题:在 DNS 迁移之前完成验证
ACME 的 HTTP-01 质询通过从域名当前指向的服务器上经 80 端口获取一个文件,来证明对域名的控制权。在 DNS 切换之前,那仍是旧服务器,所以新服务器无法这样获得证书。有三种干净的解决方法:
- DNS-01 验证。客户端通过创建 TXT 记录来证明控制权,无论网站托管在哪里都有效。自动续期随后需要对您的 DNS 服务商有 API 访问权限,而且这是从 Let's Encrypt 获取通配符证书的唯一途径。
- 重定向质询路径。Let's Encrypt 的 HTTP-01 检查会跟随重定向,因此在过渡期间,旧服务器可以把对 /.well-known/acme-challenge/ 的请求转发给新服务器。质询类型文档列出了相关条件。
- 用现有证书过渡。在最初几天把当前证书和私钥复制到新服务器,待 DNS 迁移完成后再改为自动签发。
DNS 切换前的检查清单
- 列出所有主机名。裸域名、www、shop 或 app 子域名、邮件主机、控制面板地址以及任何 API 端点。新服务器应答的每个名称都必须出现在证书上。
- 提前一两天降低 DNS TTL,使切换迅速生效,也能迅速回退。
- 检查 CAA 记录。DNS 中的 CAA 记录限定哪些证书颁发机构可以为该域名签发证书(RFC 8659)。如果新主机通过与旧主机不同的证书颁发机构签发证书,那么在记录允许之前签发会失败。
- 通过 hosts 文件条目测试。让您自己的电脑指向新服务器,在其他人之前通过 HTTPS 加载网站。
- 提供完整的证书链,而不只是站点证书。浏览器往往能应对缺失的中间证书;支付网关、API 客户端和较旧的设备往往不行。
- 遵守 HSTS。如果旧网站发送过 HSTS 头,访问过它的浏览器会拒绝普通 HTTP,也不允许访客点击跳过证书错误。新服务器必须从第一分钟起就提供有效的 HTTPS。
- 从任何 http 或 www 变体到最终 HTTPS 地址的重定向保持一跳。
邮件、面板和旧服务器
网站最受关注,但邮件服务器的 SMTP 和 IMAP 同样需要有效证书,迁移后的邮件主机若使用自签名或不匹配的证书,会在每个邮件应用中触发警告。托管面板的登录页面,以及支付或物流服务商发送到您网站的 webhook 也是如此:它们调用的是 HTTPS 地址,证书验证不通过就会放弃。
迁移完成后,请从旧服务器删除私钥并停止其续期任务,否则这些任务会不断尝试并失败。如果旧主机曾被入侵,或者您不再控制它,请吊销旧证书并用新密钥签发新证书。迁移的其余部分,从文件到数据库和邮箱,由我们的托管与数据库迁移服务负责。
确认新服务器上的续期
最后一步用来防止下一次故障。运行一次测试续期,例如使用 Certbot 时执行 certbot renew --dry-run,确认定时器或 cron 任务存在,并确保续期失败时会发出警报。公开证书现在的有效期上限为 200 天,而且上限还在不断缩短,正如我们的 SSL 证书指南所说明的那样,所以续期一年要进行好几次,不能依赖有人记得去做。如果您为这次迁移聘请 SSL 安装服务或 SSL 配置服务,请要求把这项测试作为交接的一部分。在我们的 SSL 证书安装工作中,续期会被设置并经过测试,一旦失败就会发出警报。
常见问题:SSL 证书迁移到新服务器
同一个 SSL 证书可以同时在两台服务器上运行吗?
可以。迁移期间,新旧服务器使用同一个证书和私钥是正常的,使用自动化证书时,每台服务器也可以各持有自己的证书。测试时请避免循环申请相同的证书:Let's Encrypt 对完全相同的一组名称每七天只允许签发五张证书,而它的测试(staging)环境就是为实验准备的。
更换托管公司时需要购买新证书吗?
不需要,只要您能带上私钥,或者您的证书颁发机构允许重新签发。许多主机还会为其托管的网站签发自动化证书,这种情况下,付费证书到期时可能根本不需要续订。
为什么迁移后网站只在某些设备上显示证书错误?
通常是新服务器发送的站点证书缺少中间证书链,或者证书缺少人们实际使用的某个主机名,比如 www。外部 TLS 检测工具一分钟内就能显示这两种问题。
要迁移网站、邮件服务器或整个托管账户?我们的 SSL 证书安装与配置服务会检查当前设置,在 Apache、Nginx、HAProxy、托管面板和邮件服务器上安装并配置证书,清理重定向和混合内容并验证结果,服务于长滩(Long Beach)和洛杉矶(Los Angeles)的客户,也可远程服务任何地方。请把您的域名和计划迁移的日期发给我们。




