把 ssl_protocols 改成只留 TLSv1.2 和 TLSv1.3,第二天门店反馈收银机刷不出页面,报 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,那批收银机内置的 WebView 只支持 TLS 1.0,协议在服务端被禁后握手第一步就失败,请求根本发不出去。固件不升级,就只能给它留一条窄路。

「TLS 1.0 停用」这类改动最怕改一半,回滚脚本先准备好,再动生产。改完顺手把文档补一句,省得下次自己重新推一遍。

ssl_protocols TLSv1.2 TLSv1.3;
# 临时兜底站点
ssl_protocols TLSv1 TLSv1.2 TLSv1.3;

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

具体做法是,先查访问日志里的客户端 UA 和 TLS 版本,确认是哪一批设备在报错,别凭感觉回滚;单独开一个 443 的 server 块绑定旧域名,只对这批来源放开 TLSv1,其余站点保持 1.2 以上;给门店排一个固件升级时间表,临时放开的口子到期就关。

最后用这个标准收尾,收银机恢复出单,主站检测仍显示只支持 TLS 1.2 以上。

作者 9823189