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进行数据传输。

相关推荐
mennekes10 分钟前
临时用电线路标识:插头颜色、钟面标识配套规范
运维·网络·科技·安全·制造
发光小北1 小时前
EtherNet/IP 转 ModbusTCP 网关现场应用中会遇到什么问题?
服务器·网络·tcp/ip
海宇大数据1 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化持牌网络小贷小微商户极速助业贷秒级全维风险决策网关
网络·人工智能·架构·自动化
tongyiixiaohuang3 小时前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
一只鹿鹿鹿3 小时前
智算算力、AI-芯片与产品解析(PPT文件)
大数据·运维·网络·人工智能·物联网·1024程序员节
开源必胜3 小时前
Socket、异步非阻塞 I/O 与 NGINX、Netty 模型
网络·tcp/ip·nginx
沫璃染墨3 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
蓝祁子yoky4 小时前
Qt学习日记 Day13:网络编程(一)-TCP基础与Socket实战
网络·qt·学习
箓维5 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
小羊没烦恼!5 小时前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡