Cloudflare使用api更换证书颁发机构
Cloudflare使用api更换证书颁发机构
TCIP联通宽带对部署了GTS证书网站的IP阶段性阻断
简单介绍
在折腾联通宽带下的虚拟机时,需要换源,在执行之前写的脚本的时候,发现阶段性无法链接,因此做了一些测试。
测试地区线路
北京联通、重庆联通、江苏南京联通、山东枣庄联通、浙江宁波电信、山东潍坊移动
网站影响
找了几个联通的用户测了一下
浏览器正常访问是不影响的
触发条件应该是非浏览器访问 + Cloudflare + GTS
但我在curl上面指定UA,依然阻断,具体怎么识别浏览器的还不清楚。
也就是会影响阻断命令行下载、api接口之类的请求。
不适合脚本站或者需要对接客户端提供API服务。
阻断情况
我执行了以下命令进行测试
1 | curl --insecure --resolve "www.baota.me:443:172.67.69.150" "https://www.baota.me" -o "www.baota.me.txt" --max-time 10 |
测试发现所有联通都会阻断
第一次 执行上述命令 正常访问
第二次 执行上述命令 无法访问
阻断规律
为了搞清楚阻断频率因此我在江苏南京联通做了个每3分钟访问一次的计划任务
连续阻断情况为1-3次 即有时候会阻断3-9分钟
阻断过后会有15分钟左右的正常访问时间
然后进入下次阻断周期
目前测试阻断全部CloudFlare的IP,包括一些跟CF合作的IP。
阻断原因
原以为是阻断了CF的IP或者ASN,经过loc论坛回复得知可能是因为证书品牌的缘故。
因此单独使用一个NS接入的域名进行测试.
测试结果
使用GTS证书
还是跟上面一样访问一次就阻断了。
然后使用API进行更换证书为let’s证书
连续测试多次并且更换其他IP都没有阻断的情况
证书版本测试
群里有老哥说可能是因为tls1.3+ech导致的无差别阻断。
然后我改进了一下命令 指定tls最大版本1.2进行测试
1 | curl --insecure --resolve "www.baota.me:443:172.67.69.150" "https://www.baota.me" -o "www.baota.me.txt" --max-time 10 --tls-max 1.2 |
测试阻断依旧
解决办法
Cloudflare NS方式接入,可以[使用api更换证书颁发机构]Cloudflare使用api更换证书颁发机构 | TCIP的窝窝)。
Cloudflare SAAS方式接入的无解,API提示需要Enterprise套餐。
也可以使用其他CDN来服务联通线路的用户。
解决方案如下:
移动联通电信阻断Cloudflare使用api更换证书颁发机构
简单介绍
由于发现联通会阻断GTS证书之后,为了解决阻断问题,查看Cloudflare API文档寻找,更换证书颁发机构的方法。但很可惜,只有通用证书可以更换,SAAS主机名的证书,API返回提示要Enterprise套餐才有权限更换。考虑有NS接入的,因此我把通用证书的更换方法写在了这里。
一键脚本
1 | #!/bin/bash |
区域ID获取
选择一个域后,在右侧有个区域ID。
Global API Key 获取
访问
https://dash.cloudflare.com/profile/api-tokens
在API 密钥栏内查看Global API Key
证书颁发机构标识
Let’s Encrypt 标识为 lets_encrypt
Google Trust Services 标识为 google
DigiCert 标识为 digicert 该证书根证书已经过期失效
SSLCOM 标识为 ssl_com 该证书测试中暂不支持
Sectigo 标识为 sectigo 该证书仅用于备份不支持切换