问题
好久没有登博客,今天我访问的时候竟然被浏览器拦截了!说证书不受信任!我立马查看一下证书,发现证书竟然是颁发给coding pages的!
怎么回事?我立马登录coding studio查看证书,发现证书全部失效!
然后我尝试重新申请证书,coding pages 给我这个提示:
1 | acme:error:unauthorized: Invalid response from https://www.royians.cn/.well-known/acme-challenge/3M3_G6whNAHjDP4_eoCOEuKij0uo6Vl_WpwetrMNjIQ [2604:a880:2:d1::1a9:8001]: "<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head><link rel=manifest href=/manifest.json>\n \n <meta charset=\"UTF-8\">\n<meta name=\"viewpo" |
解决
最后我发现了问题所在:下面是我的DNS解析:
因为国内访问GitHub的速度不好,所以我这里是双线部署,国内ip解析到coding pages,国外ip解析到netlify。这就是问题的根源。
这就导致在Coding Pages的后台申请证书时无法通过验证,最终就会申请失败。之后,我停止了向netlify的解析,就申请成功了。
官方回复
建议使用 HTTPS 时不要使用网上所谓的『双线部署』。把 Coding Pages 的服务设置成只能国内解析,会导致 SSL 证书签发或续期失败。因为两个 Pages 服务的自定义域名 SSL 证书都是通过 Let’s Encrypt 获取的,而 Let’s Encyrpt 在签发证书时需要通过访问站点来获取 域名验证信息。如果按您上述的 DNS 设置,则 Let’s Encrypt 只能访问到 Github Pages 的域名验证信息,而无法访问 Coding Pages 的域名验证信息。也就是后续申请或续期 SSL 证书时,Coding Pages 总是无法通过 Let’s Encrypt 的域名验证,也即总是无法获取 SSL 证书。