cloudflare证书更新
昨天下午发现自己挂载cloudflare的网站怎么都提示证书异常了。
可一开始提示的都不是证书不匹配,而是什么“cannot communicate securely with peer: no common encryption algorithm(s).”
一开始想着这是大宋gfw又升级了,把cloudflare的一些域名给屏蔽了。
去dash上看了一下,发现2个证书,其中一张是有效的,写的是www的证书,但我记得原先cf的www证书是包含“*.timoq.com”这样的泛域名的。正常应该是能访问的。那看来真是大宋搞鬼了。
可去海外机器上curl一下,发现也都是这个错误。那心想这下错怪大宋了。还是估计是cf的问题,发个朋友圈问一下,但有人说好的,也有说不好的。
一时间也没啥头绪。
今天用另外一个cf上托管的网站看一下,发现是正常的,那看来真不是cf的问题。
那就是证书的问题了,怎么没有更新呢。然后去邮箱里看下,发现躺着2封提示你证书快到期的邮件。但是里面说着是到昨天就被删除了,点击里面的renew已经没有任何效果了。
用cf提供的api查看一下,发现就一张证书。其他无效的都不显示。
1 | curl -s https://api.cloudflare.com/client/v4/zones/zone_id/ssl/certificate_packs -H "X-Auth-Email: email" -H "X-Auth-Key: key" -H "Content-Type: application/json"| jq . |
翻了一下文档也没有合适的,这个证书还居然没有任何支持,连工单支持都没有。
于是自己摸索出来一个可用的方法。
因为原先我是用的自己的cf解析,所以第一步就是把需要指向cf的域名重新指向到cf的cdn域名。比如这样
1 | blog.timoq.com CNAME blog.timoq.com.cdn.cloudflare.net. |
然后去到控制台进行如下操作(有风险,我的小破网站本来就无法访问了,所以也无所谓):
SSL/TLS概述里将 SSL/TLS 加密模式为 “关闭”
边缘证书里:
部分区域的 DCV 委派:这里也记得在dns server改一下
禁用通用SSL
好了,上诉操作完成后等待2分钟。
2分钟后将上面2个“关闭”改为开启。然后就会看到边缘证书里主机部分就能看到刚才指向CDN的那个域名了,这里就根据操作就行了。
最后发现使用google证书的有效期才3个月,而用digicert可以1年。不过可以通过api来进行修改
1 | curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/zone_id/ssl/universal/settings" -H "X-Auth-Email: email" -H "X-Auth-Key: key" -H "Content-Type: application/json" --data "{\"certificate_authority\":\"digicert\"}" |
主要也是参考了
https://developers.cloudflare.com/ssl/edge-certificates/changing-dcv-method/
https://developers.cloudflare.com/ssl/edge-certificates/changing-dcv-method/validation-backoff-schedule/
一开始还是在问题定位上花了比较多的时间。