ws升级为wss

11 篇文章 0 订阅
订阅专栏
本文介绍了如何在Netty项目中,从使用ws协议升级到https的wss协议,包括从PKCS1格式证书转换为PKCS8格式,以及在代码中添加SslUtil和WebSocketServerProtocolHandler的步骤。
摘要由CSDN通过智能技术生成

需求:项目中需要使用netty,本地测试的时候使用的是ws,然后要部署到服务器上,使用https连接,https下就不能用ws了,必须升级到wss

1.阿里云申请免费证书

2.保存证书到本地目录
在这里插入图片描述

3.修改代码

SslUtil 工具类

import io.netty.handler.ssl.ClientAuth;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;

import java.io.File;

/**
 * netty 证书
 */
public class SslUtil {

    private static final File pemFile = new File("C:\\Users\\Lenovo\\Desktop\\zhengshu\\server.pem");
    private static final File keyFile = new File("C:\\Users\\Lenovo\\Desktop\\zhengshu\\server.key");

    public static SslContext createSSLContext() throws Exception {
        SslContext sslCtx = SslContextBuilder.forServer(pemFile, keyFile).clientAuth(ClientAuth.NONE).build();
        return sslCtx;
    }
 }

自定义handler中增加代码

@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
    ChannelPipeline pipeline = socketChannel.pipeline();
    //ws升级为wss
    SslContext sslCtx = SslUtil.createSSLContext();
    pipeline.addLast(sslCtx.newHandler(socketChannel.alloc()));
    //30秒客户端没有向服务器发送心跳则关闭连接
    pipeline.addLast(new IdleStateHandler(15, 0, 0));
    // 因为使用http协议,所以需要使用http的编码器,解码器
    pipeline.addLast(new HttpServerCodec());
    // 以块方式写,添加 chunkedWriter 处理器
    pipeline.addLast(new ChunkedWriteHandler());
    /**
     * 说明:
     *  1. http数据在传输过程中是分段的,HttpObjectAggregator可以把多个段聚合起来;
     *  2. 这就是为什么当浏览器发送大量数据时,就会发出多次 http请求的原因
     */
    pipeline.addLast(new HttpObjectAggregator(8192));
    /**
     * 说明:
     *  1. 对于 WebSocket,它的数据是以帧frame 的形式传递的;
     *  2. 可以看到 WebSocketFrame 下面有6个子类
     *  3. 浏览器发送请求时: ws://localhost:7000/hello 表示请求的uri
     *  4. WebSocketServerProtocolHandler 核心功能是把 http协议升级为 ws 协议,保持长连接;
     *      是通过一个状态码 101 来切换的
     */
    pipeline.addLast(new WebSocketServerProtocolHandler("/websocket"));
    // 自定义handler ,处理业务逻辑
    pipeline.addLast(new NettyWebSocketServerHandler());
}
});

增加这两行代码

SslContext sslCtx = SslUtil.createSSLContext();
pipeline.addLast(sslCtx.newHandler(socketChannel.alloc()));

4.测试

结果报错:
在这里插入图片描述
原因:查阅资料netty仅仅支持pkcs8,当前为pem/key的格式的,也就是PKCS1的

证书格式区别:

  • PKCS1的文件头格式 -----BEGIN RSA PRIVATE KEY-----
  • PKCS8的文件头格式 -----BEGIN PRIVATE KEY-----

解决:将证书(server.key) 通过OpenSSl 生成pkcs8的版本

1.下载OpenSSL https://www.oomake.com/download/openssl 下载 OpenSSL 3.0.0 Windows 64位 Light 版.exe 版本

2.将安装了路径加到环境变量中

3.在证书目录打开cmd,执行下面命令

openssl pkcs8 -topk8 -inform PEM -in server.key -outform pem -nocrypt -out server8.key

在这里插入图片描述

修改SslUtil工具类中路径

private static final File keyFile = new File("C:\\Users\\Lenovo\\Desktop\\zhengshu\\server8.key");

4.打开postman再次测试

我的websocket端口配置的是9000

访问:ws://127.0.0.1:9000/websocket

会报错 io.netty.handler.codec.DecoderException: io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record

访问:wss://127.0.0.1:9000/websocket 连接成功,至此ws成功升级为wss

在这里插入图片描述

ws改为wss协议过程
qq_39040427的博客
08-10 6727
一、申请阿里云证书 点击验证-->>提交审核(5分钟内接受到成功短信) 使用xftp将解压文件上传到服务器/etc/nginx/(没有可以新建一个) 二、修改nginx配置(主要是server里面配置) #user nobody; worker_processes 1; events { worker_connections 1024; } http {
记一次网站全站http升级为https的过程,websocket : ws升级wss遇到的问题等
2401_84435866的博客
05-04 924
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】世界上只有一种真正的英雄主义就是在认清生活真相之后仍然热爱它。
wswss
weiqiang915的博客
07-11 2754
微信小程序中用到了websocket,上线时发现配置接口时只支持wss使用nginx,将wswss,可以类比httphttps。接下来的操作是在http已成功为https的基础上进行的。httphttps(ngxin配置与此类似) 若ws路径如上,则配置如下 ngxin -s reload 即可。注意:由于nginx中最大空闲时间为60s,所以最好设置个心跳机制...
如何通过Nginx将http升级为https,ws升级wss
最新发布
wangye135的博客
07-14 1224
最近项目需要部署上线,前端采用的是小程序客户端,小程序部署上线需要使用更为安全的https协议进行通信。使用Nginx接收到前端发送的https请求,并将请求反向代理到处理http请求的后端服务器上。这样可以在不进行任何后端代码更改的条件下,完成http到https的升级
websocket将ws换为wss
m0_72376882的博客
06-30 1034
这时候说明是websocket建立连接错误因为wss是加密的而使用websocket建立连接也是需要证书的,只需要在建立websocket建立连接时指定证书地址即可。报这个错说明需要将客户端的ws换成wss的然后在nginx的配置文件中需要配置。这时候再访问就会发现不再报这个错了 会换成另一个错。
利用Nginx将ws协议升级wss协议(采用发方式)
Eiwen的技术生涯
05-07 652
【代码】利用Nginx将ws协议升级wss协议(采用发方式)
Nginx将ws升级wss
小小酥的博客
02-19 2123
使用nginx将ws升级wss
ws升级wss在nginx上的配置
fang_qiming的博客
03-15 6251
后台开发websocket协议,采用ws开发,开发完成之后部署上线,配置SSL之后,ws协议就需要升级wss协议了,在nginx上如下配置就能后将ws->wss  服务端的开发不受ws或者是wss协议的影响,正常开发即可nginx配置如下:...
QWebSocket从ws切换到wss
weixin_43246170的博客
06-01 1625
1、Qt自带的老版本OpenSSL1.0.x在今年(2019)就要结束LTS支持了,从(5.12.4)开始Qt将启用1.1.x,新版本带来的TLS1.3,以前的libeay32.dll和ssleay32.dll变成了libcrypto-1_1.dll 和libssl-1_1.dll。将OpenSSL 32位的bin目录里的 libcrypto-1_1.dll 和 libssl-1_1.dll 拷贝到自己qt路径下mingw73_32\bin 下面(用什么qmake构建,就放在qmake对应的bin路径下)
netty整合websockte并将ws升级wss
Mr. Wu's blog
03-28 1955
netty整合websocket,并实现ws升级wss
nginx将http协议代理为https 附带ws升级wss
niuzh的博客
12-04 1838
一、自验证用ssl证书生成 1、首先要生成服务器端的私钥(key文件) openssl genrsa -des3 -out server.key 1024 会有两次要求输入密码,输入同一个即可 输入密码 后你就获得了一个server.key文件 2、去除key文件密码(为了方便使用,不然每次使用都需要输入密码验证) openssl rsa -in s...
CURL多线程使用http代理访问WS/WSS-易语言
06-14
对于WS/WSS,可能还需要设置`CURLOPT_HTTPPROXYTUNNEL`选项,以确保通过代理建立的连接能正确处理WebSocket升级请求。 "例子.e"、"curl.e"和"append.e"是易语言的源代码文件,其中包含了实现CURL多线程访问的示例...
netty做服务端支持ssl协议实现websocket的wss协议(java)
05-16
它们为网络通信提供了加密和身份验证,确保数据在网络中的传输是安全的,不被第三方窃取或篡改。在Websocket WSS中,这些安全特性同样适用,使得WebSocket连接也能享受到加密的保护。 要使用Netty实现WSS,我们需要...
ws升级wss报错:This request has been blocked; this endpoint must be available over WSS.
qq_27164017的博客
01-23 1645
nginx部署https后websocket需要将ws升级wss报错
django+uwsgi+nginx配置websocket(wswss)
qq_45489600的博客
05-01 4592
若不使用uwsgi+nginx部署项目,则不需要相关配置,且不需要wswss(即ws+ssl),当在服务器中使用https访问,且通过uwsgi+nginx实现负载均衡等功能时,需要进行相关配置后才可使用。 一.前端配置 wswss,主要是为了提高安全性,wss是websocket的加密形式,需要配置ssl证书,如果服务器已在nginx中配置https访问(已安装证书),则不需要则配置ssl证书。 前端配置改变不多,只需要将ws换为wss即可。 // var socket = new
用nginx反向代理功能将WS为加密websocket (wss)
白袍小将的博客
08-08 5438
原来写的服务器端程序支持websocket非加密协议,即仅支持 ws://ip/file形式的访问,现在网站的主协议变成了https了,再通过ws://协议来访问原服务器,浏览器阻止了。查找原因就是,如果一个网页的协议是https的,则内部的子连接必须也是安全套接字,如果原理是ws协议,则现在必须变为wss协议。 由于时间紧,来不及修改原服务器了。发现nginx可以将ws协议通过反向代理的方式wss,目前苟且采用这种替代方案吧。 nginx配置成websocke...
通过frp和Nginx将内网WS协议升级WSS协议
weixin_53510183的博客
01-03 1479
在云服务器上搭建frps服务时,为了提高安全性和加密通信,我们可以通过Nginx配置SSL反向代理,使得frps能够通过HTTPS协议进行远程访问。本文将介绍如何通过Nginx配置SSL反向代理,实现将内网ws协议穿透升级wss协议,
netty-写websocket从wswss升级
weixin_38689747的博客
04-02 1278
本文描述将使用netty搭建的websokcet服务升级为支持https的wss协议 本文通过2种方式实现 1依赖jdk提供的jks 2依赖签名证书.crt,.key文件实现 JKS 1生成秘钥 keytool -genkey -keysize 2048 -validity 365 -keyalg RSA -keypass netty123 -storepass netty123 -keystore wss.jks 2写一个工具类 构造SSLContext 对象 package com.iptv.rtc.s
Nginx配置教程:同时支持WSSWS连接
"该文主要涉及如何在Nginx服务器上配置支持WSS(WebSocket over SSL/TLS)和WS(普通WebSocket)两种连接方式。" Nginx 是一个高性能的HTTP和反向代理服务器,同时也支持WebSocket协议。WebSocket提供了一种持久化...
写文章

热门文章

  • mybatis-plus的批量新增/批量更新以及问题 48020
  • Excel VBa 连接Oracle数据库 3918
  • xxl-job的学习使用 3437
  • Java的实体类 3322
  • springboot启动读取数据字典缓存到redis 3293

分类专栏

  • netty 11篇
  • Spring源码 18篇
  • MyBatis源码 19篇
  • 设计模式 28篇
  • mysql 5篇
  • 事务 5篇
  • Spring 19篇
  • 其他 13篇
  • Mybatis 4篇
  • redis 13篇
  • Springboot 17篇
  • 工具 1篇
  • 面试题 4篇
  • docker 1篇
  • 接口优化 1篇
  • JavaSE 6篇
  • js练习 2篇
  • shardingjdbc 5篇
  • elasticsearch 1篇
  • 数据结构与算法 1篇
  • jvm 1篇
  • SpringMVC 14篇
  • vue 2篇
  • linux 1篇
  • Spring Cloud 1篇
  • nginx 1篇
  • git 1篇

最新评论

  • Netty对接阿里云语音识别和录音识别

    江 流 儿: 您好,请问,我使用websockt传输二进制数组,但是后端一直不输出结果 channel.writeAndFlush(new TextWebSocketFrame(response.getTransSentenceText())); 也不返回前端

  • ws升级为wss

    weixin_66357565: 从网页上发送wws请求报证书信任问题

  • 装饰器模式

    ユリリ: 举例很直观,对理解装饰器模式很友好,点个赞

  • ws升级为wss

    写Java的Thomas: 这里面的pem文件是啥,是ssl证书里面的嘛

  • 注解

    Filwaod: 注解就是一个标识,还要搭配反射或者AOP使用

大家在看

  • Java | Leetcode Java题解之第429题N叉树的层序遍历 58
  • PHP isset() 和 empty() 区别
  • C语言 | Leetcode C语言题解之第429题N叉树的层序遍历
  • 【已解决 含代码调试分析】pytorch的维度,为什么计算loss是0维度的,0维度是是什么?作用是什么? 559
  • 【已解决 含pytorch 代码调试分析】pytorch 数据类型基础,与Python数据类型的区别,为什么要另外设置新的pytorch 数据类型? 570

最新文章

  • Sping源码总览
  • 十七、【源码】数据类型转换工厂
  • 十六、【源码】三级缓存解决循环依赖
2024年38篇
2023年40篇
2022年38篇
2021年72篇
2020年2篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢蔬菜雕塑哪家不错小区玻璃钢动物雕塑造型天津景观玻璃钢雕塑订做价格深圳熊猫玻璃钢卡通雕塑景观玻璃钢雕塑品牌临沧玻璃钢仿铜雕塑报价玻璃钢雕塑鱼图片大全吉林佛像玻璃钢雕塑价位玻璃钢雕塑验收单贵阳欧式玻璃钢雕塑商场橱窗美陈细分报价泉州玻璃钢花盆深圳超市商场美陈现价学校玻璃钢仿铜雕塑定制叶县玻璃钢雕塑设计淮北玻璃钢雕塑制作公司山西仿铜玻璃钢雕塑设计商场美陈分为信阳玻璃钢雕塑公司淮北玻璃钢雕塑生产厂家平凉广场玻璃钢雕塑设计佛山景观玻璃钢卡通雕塑黑龙江公园玻璃钢雕塑销售电话广州玻璃钢雕塑支持打样许昌玻璃钢卡通雕塑定制电话田独玻璃钢雕塑厂家玻璃钢雕塑材质是什么材料玻璃钢飞马雕塑公司美陈商场门口商场美陈室外装置政府报批香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化