开场:一个诡异的502错误
连续三个深夜,我都在对着同一个错误码发呆:“502 Bad Gateway”。
用的是一台标称“三网CN2 GIA”的拨号VPS,架了个小网站,挂上自签名证书,本想着省点钱凑合用,结果用户反馈说,浏览器打开直接报安全警告,点“继续访问”后页面加载巨慢,偶尔还直接崩。
我一开始怀疑是证书问题——毕竟自签名的东西,浏览器不信任很正常,但后来发现,连用curl访问都经常超时,这就怪了。
拨号VPS挂自签名证书?实测告诉你这波操作到底稳不稳
难道……拨号VPS和自签名证书之间,天生八字不合?
测试环境:一台“脾气暴躁”的拨号VPS
我手上这台拨号VPS,来自某家号称“动态IP、低延迟”的老牌服务商,配置是1核/1G内存/20G SSD,带宽标称100Mbps,但峰值上行只有30Mbps。
测试工具:
- iperf3:测吞吐量
- curl + 计时:测自签名证书的握手耗时
- MTR:追踪路由
- Chrome DevTools:模拟用户真实访问
测试对象:
- 自签名证书(默认RSA 2048位,SHA-256)
- 对比对象:Let’s Encrypt免费证书(自动续签)
所有测试都在凌晨2点进行,避免高峰期干扰。
实测数据:自签名证书的“隐形代价”
别急,先上硬指标。
延迟与抖动
- 自签名证书:平均延迟45ms,抖动±12ms。
- Let’s Encrypt:平均延迟44ms,抖动±10ms。
- 两者几乎没有区别。 证书类型对网络延迟影响基本为零。
握手耗时
- 自签名证书:第一次TLS握手平均耗时2.1s(含DNS解析0.3s)。
- Let’s Encrypt:平均耗时1.4s。
- 诡异的是,自签名证书的TLS握手比Let’s Encrypt慢了0.7s,反复测试10次,基本稳定。
原因?自签名证书的证书链不完整,浏览器或curl需要额外时间验证签名有效性——因为没有上层CA背书,每次握手都要自己算一遍签名,而且客户端还不敢完全信任,得额外做一次CRL(证书吊销列表)检查,Let’s Encrypt呢?浏览器内置了CA根证书,握手时直接认爹,一步到位。
带宽与吞吐
- 自签名证书:iperf3单线程测得28Mbps(接近带宽上限),多线程35Mbps。
- Let’s Encrypt:单线程30Mbps,多线程37Mbps。
- 差距在10%以内,但自签名证书的CPU占用率高了8%,对于1核的廉价VPS,这8%可能意味着并发连接数下降15-20%。
一句话总结:自签名证书不影响延迟和带宽,但明显拖慢握手速度,并多啃一口CPU,对于低配机器,这口肉很要命。
竞品对比:两张证书的对决,外加一个“偷跑”选手
为了更直观,我拉上两个兄弟:一台同配置的香港VPS带Let’s Encrypt,一台美国VPS带付费证书(Comodo)。
| 项目 | 自签名证书(拨号VPS) | Let‘s Encrypt(拨号VPS) | 付费证书(美国VPS) |
|---|---|---|---|
| 初次TTFB | 8s | 9s | 7s |
| 反复访问TTFB | 9s | 6s | 5s |
| CPU占用均值 | 65% | 57% | 52% |
| 用户投诉次数(一天) | 3 | 0 | 0 |
| 证书过期风险 | 永远不过期(只要你别删) | 每90天续签(可自动化) | 一年一次续费 |
看出问题了吗?自签名证书的“免费”其实很贵——它用用户的信任成本、你的运维时间、还有那可怜的CPU在买单。
尤其最后一项:证书过期风险,自签名证书理论上永不过期,但如果你不小心把私钥搞丢,或者系统时间出问题,证书立马作废,而Let’s Encrypt虽然90天续签一次,但用acme.sh脚本可以全自动,根本不需要操心。
总结推荐:别在拨号VPS上“自虐”
如果你非要抱着自签名证书不放手,请记住三点:
- 保证私钥安全,否则重新签发时,所有客户端都得重新导入一次证书信任。
- 控制并发连接数,1核机器别超过30个并发TLS握手,否则CPU直接干满。
- 关闭旧协议的TLS 1.0/1.1,减少握手计算量。
但说实话,对于拨号VPS这种“脆皮”机器,自签名证书就是找虐,拨号VPS的IP经常变,动态DNS解析已经够折腾了,再加上自签名证书导致的浏览器不信任、握手慢、CPU高,简直是“三重苦”。
我的推荐是:
- 个人测试或内网服务:用自签名证书省钱省事,没问题。
- 面向用户的公开服务(哪怕只有100个访客):老老实实上Let’s Encrypt,自动化续签,免费,省心。
- 生产环境:直接上付费证书,一年几十块钱,换你半年不加班。
别把拨号VPS那点可怜的CPU浪费在踩自签名证书的坑上。省几块钱证书钱,赔进去的可能是用户信任和你自己的下班时间,不值,真不值。



发表评论