Inspired by Let\'s Encrypt Community , thx to sahsanu, jsha, and orzorc.
开端
Lets Encrypt 是一款免费的网站 SSL 证书签发机构,Certify 是一款开源的 Windows + IIS 下的 Lets Encrypt 申请/自动更新程序。
花生壳是oray的动态域名解析服务。
笔者在尝试在启用了花生壳的域名网站申请 Lets Encrypt 证书时,发现 validation 总是失败,仿佛证书服务无法访问我们的域名一样。
而且这个问题与 域名、网站配置、操作系统 无关。
发展
在 Lets Encryp t社区笔者发现了问题的症结:
Oray 的 DNS 不支持 DNS 0x20。
在向 Lets Encrypt 申请证书时,会对每个提供的域名进行解析,当 Lets Encrypt 发出解析请求时,会随机将域名中的部分字母大写。
例如:域名为 envsafe.cn,但发送时改为 eNvsAfE.cN
Lets Encrypt 期待 DNS 的应答中的域名为完全一致的 eNvsAfE.cN,否则将拒绝申请
然而 oray 的 DNS 应答中域名变回了非大写的 envsafe.cn
在联系了oray的专员客服后,笔者认为花生壳的技术人员对此不甚了解,等待他们更新服务,不如另辟蹊径。
结局
既然 oray 的 DNS 不行,那就临时换一个能行的。经笔者测试,DNSPod(腾讯云)的 DNS 是可以的。
成功申请证书步骤如下:
- 在域名管理后台的 NS 管理中,选择自定义DNS,输入DNSPod的域名解析服务地址,免费版地址为:
- f1g1ns1.dnspod.net
- f1g1ns2.dnspod.net
- 在DNSPod中添加域名,等待DNS生效(经测试,cn域名几乎即时生效,info需要约12小时,cc需要约18小时)
- 增加域名的A记录(可以随便写),下载安装 DNSPodClientLite 启用域名的动态解析。
- 运行Certify获取证书
- 再次修改域名NS,改回oray,停止DNSPodClientLite。
证书有效期为90天,应在证书到期之前执行上述步骤 renew。