负载均衡器配置并非必须搭配ssl证书,是否启用取决于协议类型与业务需求;四层tcp/udp透传可不终止tls而无需证书,但https监听、tls终止或wss必须绑定有效证书。

WebSocket 用 wss 必须在负载均衡层终止 SSL
直接在后端服务(如 Node.js、Spring Boot)上配置 wss 是行不通的——除非你把私钥和证书全扔进应用代码里,这既不安全也不符合云平台最佳实践。真实生产环境里,wss:// 的 TLS 握手必须由前端的负载均衡器(华为云 ELB / 阿里云 ALB/SLB)完成,后端只走明文 ws:// 或内网 HTTP。否则微信小程序会报“连接失败”,浏览器控制台显示 ERR_SSL_PROTOCOL_ERROR。
常见错误现象:
- 前端能连上域名,但 WebSocket 立即断开,控制台无明确错误
- 抓包发现 TLS 握手在 Server Hello 后就中断
- 用
openssl s_client -connect your-domain.com:443 -servername your-domain.com测试,提示 “verify error:num=20:unable to get local issuer certificate”
关键点:wss 不是“给 WebSocket 协议加个 SSL”,而是整个 HTTPS/TLS 层必须完整建立,而 WebSocket 升级请求(Upgrade: websocket)是在这个加密通道里发的。所以证书必须部署在第一个能处理 TLS 的节点,也就是负载均衡器上。
阿里云 SLB/ALB 配置 HTTPS 监听 + WebSocket 转发策略
阿里云不支持在 SLB 上原生识别 WebSocket 协议,但只要满足两个条件,就能稳定转发:
- 监听协议选
HTTPS,前端端口443,后端协议选HTTP或HTTPS(推荐 HTTP,减少后端 TLS 开销) - 后端服务器必须返回正确的
Upgrade响应头,且负载均衡器不能改写或丢弃它(ALB 默认保留,SLB 需确认开启“保持客户端请求头”)
实操注意:
华为荣耀3焦点图轮播带动画特效是一款华为荣耀3焦点图广告页面代码JS图片轮播带动画特效,效果非常不错,基于jQuery实现的,虽然效果不错,不过带有大量的JS,大家看看是否可以改造,总体还是不错的。
- 上传证书时,
.crt文件内容必须包含服务器证书 + 中间 CA 证书(顺序不能错),.key是原始私钥,不能加密(即无DEK-Info行) - SLB 控制台中“健康检查协议”建议设为
HTTP,路径填一个轻量接口(如/health),不要用/,避免触发 WebSocket 升级逻辑 - ALB 支持基于 Host 或路径的转发策略,可复用同一证书服务多个 wss 域名,比如
wss://chat.example.com和wss://api.example.com
华为云 ELB 配置 HTTPS 监听并透传 WebSocket Upgrade 头
华为云 ELB(特别是共享型和独享型)默认会透传 Connection、Upgrade、Sec-WebSocket-Key 等关键头,但有两个隐藏开关必须打开:
- 在监听器高级配置里,“获取真实 IP”要开启(否则后端看到的全是 ELB 内网 IP,无法做限流或鉴权)
- “空闲超时时间”不能低于 60 秒(WebSocket 长连接默认心跳间隔常为 30–55 秒,设太短会导致连接被 ELB 主动断开)
证书上传位置在:弹性负载均衡 > 监听器 > 创建监听器 > 协议类型 HTTPS > 选择已有证书。注意:ELB 不接受 PFX/P12 格式,只认 PEM;若你只有 .pem 和 .key,直接上传即可;若只有 PFX,需用 openssl pkcs12 -in cert.pfx -clcerts -nokeys -out server.crt 和 openssl pkcs12 -in cert.pfx -nocerts -nodes -out server.key 拆解。
容易踩的坑:
- 证书链不全:华为云控制台上传时若提示“证书格式错误”,大概率是
server.crt缺少中间证书,把 CA 证书追加在服务器证书后面即可 - 域名不匹配:ELB 不校验 SNI,但客户端会校验证书 Subject Alternative Name,确保申请证书时已包含你要用的 wss 域名(如
wss.example.com或通配符*.example.com)
微信小程序合法域名与 wss 配置一致性验证
小程序要求 wss:// 域名必须提前在后台“开发管理 > 服务器域名”里备案,且该域名必须能通过 HTTPS 访问并返回有效证书。这里最容易忽略的是 DNS 解析和证书绑定的耦合关系:
- 域名解析必须指向 ELB/ALB 的 VIP(不是后端 ECS 的 IP),否则即使证书正确,也会因 SNI 不匹配或 TCP 连接失败而报错
- 用
curl -I -v https://your-wss-domain.com测试,确认响应头含HTTP/2或HTTP/1.1且无重定向;再用wscat -c wss://your-wss-domain.com(需安装wscat)直连测试 - 如果用泛域名证书(
*.example.com),wss.chat.example.com可用,但wss.api.chat.example.com不可用——二级子域名不被通配符覆盖,必须单独申请或换用多域名证书
复杂点在于:证书有效性、DNS 解析、负载均衡监听配置、后端服务响应头、小程序域名白名单,这五者必须全部对齐,漏掉任意一环都会导致 wss 连接静默失败。调试时别只盯着代码,先用 openssl s_client 和 wscat 分段验证 TLS 层和协议层。










