WebSocket实战之四WSS配置

一、前

上一篇文章
WebSocket实战之三遇上PAC ,碰到的问题只能上安全的WebSocket(WSS)才能解决,配置证书还是挺麻烦的,主要是每年都需要重新更新证书,我配置过的证书最长有效期也只有两年,搞不清楚为什么CA证书的有效期那么短,是为了多收钱吗?

注:网上找的一张图,理论与实践相结合,理论指导实践,实践验证理论。

二、配置WSS

WebSocket协议定义了WebSocket(WS://)以及WebSocket安全(WSS://)两种前缀,WebSocket使用HTTP握手然后升级为WebSocket协议进行通信,WebSocket安全(WSS)使用HTTPS握手然后升级为安全的WebSocket协议,WSS其实就是WS+TLS。

1、Nginx配置证书

map指令根据客户端请求http_upgrade变量的值,来改变connection_upgrade的值。如果没有规则匹配的话connection_upgrade值为upgrade,如果http_upgrade为空字符串,$connection_upgrade值为close。

snakeoil.conf

注:WSS证书的配置与HTTPS证书配置是一样的,另外/websocket/几行代码就是用来将WebSocket的连接转发到WebSocket应用。

2、客户端代码

只需要把ws改成wss就可以。

注:配置WSS几乎不用更改程序代码。

三、WSS协议抓包分析

tcpdump -ieth0 port 443 -w wss.pcap

将这张图与WebSocket实战之二协议分析 对比,我们发现基于TLS的WSS,在网络传输过程中完全被加密了,而如果是未加密的WS协议,一些代理服务器可能理解不了类似101响应码会导致WebSocket握手失败,而使用WSS协议,数据是加密的,代理只能允许连接成功并且允许WebSocket数据流通过,不然会造成误伤。

注:使用了WSS一个方面数据传输更安全,数据抓包看不到传的是什么东东,另外一方面可以保证能够顺利穿透代理服务器和防火墙。

chrome://net-internals

在浏览器端除了可以用Chrome开发者工具调试WebSocket,还可以使用net-internals进行更低级的网络诊断,可以查看WebSocket套接字的细节。

四、WSS与HTTPS关系

TCP->HTTP

TCP->TLS->HTTPS

TCP->WS 使用HTTP协议进行握手,然后用WS进行数据传输。

TCP->TLS->WSS 使用HTTPS协议进行握手,然后用WSS进行数据传输。

相关推荐
Themberfue1 小时前
UDP/TCP ⑤-KCP || QUIC || 应用场景
网络·网络协议·tcp/ip·计算机网络·udp
路溪非溪2 小时前
计算机网络三张表(ARP表、MAC表、路由表)总结
网络·计算机网络·macos
啥也学不会a10 小时前
PLC通信
开发语言·网络·网络协议·c#
hunter20620612 小时前
ubuntu调用图形化网络测试工具
网络·测试工具·ubuntu
SmartBrain12 小时前
华为发展历程:战略转型与分析
网络
元气满满的热码式14 小时前
K8S中Service详解(二)
linux·网络·kubernetes
枣泥馅14 小时前
Netty搭建websocket服务器,postman可以连接,浏览器无法连接
服务器·websocket·postman
AI创世纪15 小时前
WIN11 UEFI漏洞被发现, 可以绕过安全启动机制
网络·安全
小马爱打代码17 小时前
TCP 详解
网络·网络协议·tcp/ip
聿琴惜荭顏丶18 小时前
.NET MAUI进行UDP通信(二)
网络协议·udp·.net