从域名到 HTTPS:一次个人网站上线记录
记录个人域名的 DNS 切换、Caddy 证书申请,以及真正从公网验证 HTTPS 的过程。
个人网站上线时,我最容易混在一起的几件事是:域名有没有指到新主机、端口能不能从公网访问,以及浏览器是否信任拿到的证书。这次迁移个人域名时,我按这三层分别检查。
先让 DNS 指向正确的主机
切换之前,域名仍可能到旧主机,直接申请公网证书没有可靠基础。确认旧主机不再承载有效业务后,DNS 记录由人工切换。下面是示例值,不是本站的真实解析记录:
my-site.example A <server-ip>
www.my-site.example CNAME my-site.example
我随后查了两台权威 DNS,以及几个公共递归解析器;当时的结果一致。DNS 传播会受缓存影响,所以这只能说明抽样路径在检查时已生效,不能保证世界上所有解析器同时更新。
实际检查时要把示例域名换成自己的域名,再分别查询权威 DNS 和公共递归解析器。
dig my-site.example A
dig www.my-site.example CNAME
让 Caddy 申请公开证书
Caddy 同时接管两个主机名。DNS 指向新服务器后,配置从早期测试用的内部 CA 切到公开 HTTPS。Caddy 日志记录了 Let's Encrypt 的 HTTP-01 校验和证书签发成功。浏览器访问这两个域名时,拿到的是公开信任的证书,而不是需要我额外安装信任根的测试证书。
HTTP 入口也没有直接展示页面,而是返回 308,跳到同一域名的 HTTPS 地址。首页在两个域名下返回 200,内容一致。
为什么最后不能用 curl -k
调试时,curl -k 能帮助确认“443 端口上有服务回应”,但它会跳过证书校验。因此它不能证明普通访客能安全打开网站。最初用内部 CA 测试时,我就把“连通”与“公开可信”分开记录。
最终验证使用普通客户端的系统信任链,没有 -k 或自定义 CA。两域名都返回 HTTPS 200、证书校验结果为 0,HTTP 返回 308;还检查了证书主机名、Caddy 状态与近期错误日志。今后续证或更换域名时,也需要重新做这一组公网检查。