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/

一开始还是在问题定位上花了比较多的时间。