开场悬念
上周有个做电商的老哥,半夜三点微信轰炸我:“兄弟,我服务器装acme.sh自动签证书,结果凌晨两点证书续签失败,全站绿锁变红锁,用户直接骂娘。”
我一看他服务器IP——好家伙,阿里云香港节点,用的还是默认的Let’s Encrypt,他问我是不是acme.sh脚本有问题,我说兄弟,你让一个北京人跑去纽约邮局取快递,快递员跑断腿也不赖邮局啊。
测试环境和工具说明
先交代下我这边的测试条件:
- 服务器A:腾讯云上海2C4G,带宽5M,系统Ubuntu 22.04
- 服务器B:阿里云杭州2C4G,带宽3M,系统CentOS 7.9
- 服务器C:某小众“高防”机房(号称BGP三线,实际是广东某地),2C2G,带宽10M
- 工具:acme.sh 3.0.7(GitHub最新版),curl自写计时脚本,另外用
openssl s_time测握手性能
为什么选这几家?因为“国内服务器”这词太虚了——你放北京和放贵阳,网络路径完全是两码事,我特意挑了三个不同区域的代表。
用了三年acme.sh,我为什么劝你在国内服务器上别急着上HTTPS?
实测数据:延迟/带宽/吞吐,别信宣传图
先测最要命的证书签发时间(DNS-01验证,用的阿里云DNS API):
- 上海A:总耗时18秒(DNS解析生效7秒,签发11秒)
- 杭州B:总耗时26秒(解析生效12秒,签发14秒)
- 广东C:总耗时4分52秒(解析生效3分钟,签发阶段卡住两次)
再看HTTPS握手延迟(本地连服务器,TLS 1.3,重复100次取中位数):
- 上海A:11.2ms
- 杭州B:15.8ms
- 广东C:3ms(这货的证书链不完整,强制补链才成功)
然后测续签的稳定性(连续7天,每天凌晨4点触发续签):
- 上海A:7次全成功,平均耗时21秒
- 杭州B:5次成功,2次超时(日志显示DNS API偶发限流)
- 广东C:只有1次成功,其余全失败——服务器时区错了,cron任务触发时间错乱,acme.sh算完时间直接报“sanity check failed”
最后搞个狠的,高并发下的吞吐(模拟500个并发HTTPS请求,静态文件1MB):
- 上海A:吞吐92MB/s,CPU峰值40%
- 杭州B:吞吐67MB/s,CPU峰值55%
- 广东C:吞吐11MB/s,直接打满CPU,还丢包7%
竞品对比:不是acme.sh不行,是你环境太奇葩
很多人问“那用certbot行不行?”我用同一批服务器测过:
- certbot在杭州B上续签成功率反而高(5次成功4次),因为它默认用HTTP-01验证,不走DNS API,绕开了阿里云限流。
- 但certbot在广东C上更惨——它检测到系统时间偏差超5分钟直接拒绝启动,而acme.sh至少能强制校准(虽然还是失败)。
关键点:acme.sh的优势是自动续签调度和多CA支持(能切Let's Encrypt到ZeroSSL),但在国内,网络问题>脚本问题,我用acme.sh + 阿里云DNS插件,腾讯云上稳如老狗,但阿里云上反而翻车——原因可能是阿里云对自家DNS API的限流策略更狠。
另外提一嘴,有人用“acme.sh + DNSPod”组合,我测了下结果:签发耗时翻倍(因为DNSPod的API响应慢),但成功率反而高,所以结论很简单:acme.sh本身不背锅,你的DNS服务商才是亲爹。
总结推荐:分情况劝退,但别一棍子打死
- 如果你是个人博客、小网站:国内服务器+acme.sh完全够用,但建议用HTTP-01验证(80端口放行),别折腾DNS API——省心。
- 如果你是电商/企业站:直接上付费证书(阿里云数字证书,一年几十块),别拿用户信任赌脚本稳定性。
- 如果你必须用acme.sh且服务器在广东/贵阳这种“非主流”机房:先测
curl -I https://acme-v02.api.letsencrypt.org的响应时间,如果超过1秒,直接换ZeroSSL的CA,或者干脆上CDN前置(用腾讯云EdgeOne,证书管理交给它)。
最后说句大实话:国内服务器的网络抽风是常态,acme.sh再牛也扛不住物理延迟。脚本只是工具箱,选对机房才是王道。 你问我现在用啥?我上海那台腾讯云,acme.sh挂着,三年没出过一次岔子,但要是哪天机房跑路,我立马滚去用托管证书。
(完)
本文不针对任何云厂商,只针对我买的垃圾带宽。



发表评论