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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/93749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】排序(2)—冒泡排序 快速排序

目录 一. 冒泡排序 基本思想 代码实现 时间和空间复杂度 稳定性 二. 快速排序 基本思想 代码实现 hoare法 挖坑法 前后指针法 时间和空间复杂度 稳定性 一. 冒泡排序 基本思想 冒泡排序是一种交换排序。两两比较数组元素,如果是逆序(即排列顺序与排序后…

定时任务管理平台青龙 QingLong

一、关于 QingLong 1.1 QingLong 介绍 青龙面板是支持 Python3、JavaScript、Shell、Typescript 多语言的定时任务管理平台,支持在线管理脚本和日志等。其功能丰富,能够满足大部分需求场景,值得一试。 主要功能 支持多种脚本语言&#xf…

我的企业证书是正常的但是下载应用app到手机提示无法安装“app名字”无法安装此app,因为无法验证其完整性解决方案

我的企业证书是正常的但是下载应用app到手机提示无法安装“app名字”无法安装此app,因为无法验证其完整性解决方案 首先,确保您从可信任的来源下载并安装企业开发者签名过的应用程序。如果您不确定应用程序的来源,建议您联系应用程序提供者…

你写过的最蠢的代码是?——AI领域的奇妙体验

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Redis与分布式-哨兵模式

接上文 Redis与分布式-主从复制 1.哨兵模式 启动一个哨兵,只需要修改配置文件即可, sentinel monitor lbwnb 1247.0.0.1 6001 1先将所有服务关闭,然后修改配置文件,redis Master,redis Slave,redis Slave…

源码系列 之 ThreadLocal

简介 ThreadLocal的作用是做数据隔离,存储的变量只属于当前线程,相当于当前线程的局部变量,多线程环境下,不会被别的线程访问与修改。常用于存储线程私有成员变量、上下文,和用于同一线程,不同层级方法间传…

复习C语言数组的用法

实验内容 1.1设计一个函数fun&#xff0c;功能是有N*N的矩阵&#xff0c;根据给定的m值&#xff0c;m<N,将每行元素中的值&#xff0c;均往右移m个位置&#xff0c;左边置0 #include<stdio.h> void fun(int (*a)[3],int m){int n,j,i,k,num;int p2;//右移位置列数nu…

基于体素场景的摄像机穿模处理

基于上一篇一种基于体素的射线检测 使用射线处理第三人称摄像头穿模问题 基于体素的第三人称摄像机拉近简单处理 摄像机移动至碰撞点处 简单的从角色身上发射一条射线到摄像机&#xff0c;中途遇到碰撞就把摄像机移动至该碰撞点 public void UpdateDistance(float defaultDist…

OpenGL之光照贴图

我们需要拓展之前的系统,引入漫反射和镜面光贴图(Map)。这允许我们对物体的漫反射分量和镜面光分量有着更精确的控制。 漫反射贴图 我们希望通过某种方式对物体的每个片段单独设置漫反射颜色。我们仅仅是对同样的原理使用了不同的名字:其实都是使用一张覆盖物体的图像,让我…

软件测试教程 自动化测试selenium篇(二)

掌握Selenium常用的API的使用 一、webdriver API public class Main {public static void main(String[] args) {ChromeOptions options=new ChromeOptions();//参数表示允许所有请求options.addArguments("--remote-allow-origins=*");WebDriver webDriver=new Chr…

【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!

文章目录 前言Maven简介Maven是什么Maven的作用 Maven的下载与安装Maven基础概念仓库坐标仓库配置全局setting与用户setting区别 第一个Maven程序&#xff08;手工制作&#xff09;第一个Maven程序&#xff08;IDEA生成&#xff09;使用模版&#xff08;骨架&#xff09;创建Ma…

vcruntime140.dll如何修复,快速修复vcruntime140.dll丢失的三种方法

vcruntime140.dll是Visual C 2015运行库的一个组件&#xff0c;它包含了许多运行时函数&#xff0c;用于支持各种程序的正常运行。当vcruntime140.dll文件丢失时&#xff0c;可能会导致一些程序无法正常运行。本文将详细介绍vcruntime140.dll的作用、丢失原因以及三种修复方法。…

AAD基础知识(identity/token/PRT)

简介 AAD(Azure Active Directory/Azure AD)是微软基于云身份验证和访问控制的解决方案&#xff0c;通过SSO登录其他o365应用(word/outlook/teams…) 微软在2023年7月把AAD重命名为Microsoft Entra ID&#xff0c;官网&#xff1a;https://www.microsoft.com/zh-cn/security/b…

uni-app实现图片预览

uni.previewImage预览图片 使用方法&#xff1a; <image class"poster" :src"imageUrl" mode"" click"previewImg(imageUrl)"></image>const previewImg (e) > {uni.previewImage({current: e,urls: image}); } 官…

【STM32基础 CubeMX】PWM输出

文章目录 前言一、PWM是什么&#xff1f;二、CubeMX配置PWM三、代码分析3.1 CubeMX生成代码3.2 PWM的几个库函数HAL_TIM_PWM_Start 3.3 PWM回调函数3.4 占空比占空比是什么__HAL_TIM_SET_COMPARE设置占空比 四、呼吸灯示例总结 前言 STM32微控制器是一系列功能强大的微控制器&…

FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍

FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍FFmpeg 简介FFmpeg 基础知识复用与解复用编解码器码率和帧率 资料 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 本系列文章要解决的问题&#xff1…

微信公众号开发基本流程(记录初级流程)

微信公众号开发基本流程 一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1. 开发者文档2. 在线接口调试工具3. Web开发者工具4. 公众平台测试账号 四、细读开发者文档五、开发流程重点解析1. 开发环境准备2. 服务器基本配置3. 存取access_token参数4. 公众号消息…

Go应用程序的安全最佳实践

在Go中预防漏洞、保护用户输入和防御代码注入和XSS攻击 在软件开发领域&#xff0c;安全性不是一个简单的事后考虑&#xff0c;而是建立强大和可信赖应用程序的基本基石。确保您的Go应用程序对潜在威胁具有韧性要求全面了解安全最佳实践。本指南深入探讨了您可以采取的重要措施…

基于蜉蝣优化的BP神经网络(分类应用) - 附代码

基于蜉蝣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于蜉蝣优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蜉蝣优化BP神经网络3.1 BP神经网络参数设置3.2 蜉蝣算法应用 4.测试结果&#xff1a;5.M…

哈哈,我保研985了,之后会出一期保研经验分享

哈哈&#xff0c;我保研了&#xff0c;之后会出一期保研经验分享 个人背景 学校&#xff1a;河南某四非&#xff0c;计算机科学与技术专业英语成绩&#xff1a;四级439&#xff0c;六级438&#xff08;夏令营无六级&#xff09;科研经历&#xff1a;一个软著、国家级大创&…