SSL证书过期时已建立的wss型WebSocket连接的客户端行为问题
wss:// 连接建立后证书过期的表现与处理方案 客户端实际表现
- TLS证书的有效性校验仅在
wss://连接建立的握手阶段执行,已经完成握手的长连接不会在运行过程中主动校验证书有效期 - 只要连接没有中断、没有触发重新握手,即使中间证书过期,已建立的
wss://连接可以正常收发数据,不会出现报错、断连等异常 - 仅当本次
wss://连接主动断开、或因网络波动等异常断连后,客户端发起新的连接请求时,才会重新校验证书有效性;如果此时服务端证书仍未更新,才会抛出SSL证书无效错误,连接建立失败
现代浏览器的处理逻辑
Chrome、Firefox、Safari、Edge等主流现代浏览器均遵循TLS协议标准实现,不会在已建立的wss://长连接生命周期内额外校验证书有效性:
- 连接存活期间证书过期,浏览器不会触发任何WebSocket层面的错误事件,
onerror、onclose回调都不会被触发 - 仅当重连发起时,才会对新的握手请求做证书校验,若证书已过期会直接终止连接,返回证书日期无效类的SSL错误
针对性适配必要性说明
- 若服务端会在证书到期前完成无缝更新,不需要额外做证书过期监控、强制重连的逻辑:存量连接可以正常运行到自然断开,新连接会用新证书完成握手,不会对业务产生影响
- 仅当业务存在证书到期后延迟更新、且不能接受新连接建立失败的特殊场景,才需要做额外适配:
- 可在服务端证书更新完成后,主动给所有存量
wss://连接下发重连通知,引导客户端切换到新证书 - 也可在客户端侧配置合理的断连重试机制,遇到证书类错误时触发降级、告警逻辑即可,无需提前监控证书有效期做强制重连
- 可在服务端证书更新完成后,主动给所有存量
内容的提问来源于stack exchange,提问作者lnstadrum
相关产品推荐
相关产品推荐

