netty配置SSL、netty配置https(开发)

netty配置SSL、netty配置https(开发)

我们在开发下使用ssl,所用的证书将不被客户端信任。

方案一

快速。使用netty提供的临时签发证书

    private static SslContext sslContext = null;public ServerChannelHandler(RouterConfig config) {this.config = config;try {if (sslContext != null)return;// 使用临时签发的一个证书SelfSignedCertificate ssc = new SelfSignedCertificate();sslContext = SslContextBuilder.forServer(ssc.certificate(),ssc.privateKey()).build();} catch (Exception e) {e.printStackTrace();}}

配置

@Slf4j
public class ServerChannelHandler extends ChannelInitializer<SocketChannel> {private final RouterConfig config;private static SslContext sslContext = null;public ServerChannelHandler(RouterConfig config) {this.config = config;try {if (sslContext != null)return;// 使用临时签发的一个证书SelfSignedCertificate ssc = new SelfSignedCertificate();sslContext = SslContextBuilder.forServer(ssc.certificate(),ssc.privateKey()).build();} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ChannelPipeline pipeline = ch.pipeline();// 使用netty临时签发的证书pipeline.addLast(sslContext.newHandler(ch.alloc()));pipeline.addLast(new HttpServerCodec());// http编解码pipeline.addLast(new HttpObjectAggregator(config.getMaxContentLength()));pipeline.addLast(new DispatcherHandler(config));}
}

访问时需要你提前加上https,不会为你自动重定向到https
https://localhost:9595/
在这里插入图片描述
在这里插入图片描述

但是此时你发现控制台:
在这里插入图片描述

这是因为证书不被客户端信任,如果你是使用 logback日志,可以配置忽略它:
logback.xmlconfiguration中添加

<logger name="io.netty.channel.DefaultChannelPipeline" level="OFF"/>

上面的警告日志将不再打印,nice~

方案二

使用jdk自签一个jks证书:

keytool -genkeypair -alias lk -keyalg RSA -keypass 123456 -storepass 123456 -keyalg RSA -keysize 2048 -validity 3650 -keystore lk.jks

在这里插入图片描述

配置ssl

@Slf4j
public class ServerChannelHandler extends ChannelInitializer<SocketChannel> {private final RouterConfig config;public ServerChannelHandler(RouterConfig config) {this.config = config;}@Overrideprotected void initChannel(SocketChannel ch) throws Exception {ChannelPipeline pipeline = ch.pipeline();// ssl, 每次访问都要加载新的 SSLEngine 对象SSLEngine sslEngine = getSslContext().createSSLEngine();// 声明服务端sslEngine.setUseClientMode(false);pipeline.addLast(new SslHandler(sslEngine));pipeline.addLast(new HttpServerCodec());// http编解码pipeline.addLast(new HttpObjectAggregator(config.getMaxContentLength()));pipeline.addLast(new DispatcherHandler(config));}private static SSLContext getSslContext() throws Exception {// 密码char[] passArray = "123456".toCharArray();SSLContext sslContext = SSLContext.getInstance("TLSv1");KeyStore ks = KeyStore.getInstance("JKS");//加载keytool 生成的文件FileInputStream inputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\temp\\ssl\\lk.jks");ks.load(inputStream, passArray);KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());kmf.init(ks, passArray);sslContext.init(kmf.getKeyManagers(), null, null);inputStream.close();return sslContext;}
}

效果
在这里插入图片描述

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

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

相关文章

使用Python在PowerPoint演示文稿之间复制样式(复制幻灯片母版)

在专业演示文稿设计与制作领域&#xff0c;多场演示间保持一致性至关重要。在PowerPoint演示文稿之间复制幻灯片母版成为了一项关键技巧&#xff0c;用以维持统一的视觉风格&#xff0c;确保品牌形象的一致性&#xff0c;并提升观众的参与度。这一做法不仅能节省宝贵的时间&…

TCP 连接,一端断电和进程崩溃有什么区别?

TCP 连接&#xff0c;一端断电和进程崩溃有什么区别&#xff1f; 前言主机崩溃进程崩溃有数据传输的场景客户端主机宕机&#xff0c;又迅速重启客户端主机宕机&#xff0c;一直没有重启 总结 前言 有的小伙伴在面试腾讯的时候&#xff0c;遇到了这么个问题&#xff1a; 这个属…

Java入门基础学习笔记11——关键字和标识符

1、关键字 关键字是java中已经被赋予特定意义的&#xff0c;有特殊作用的一些单词&#xff0c;不可以把这些单词作为标识符来使用。 注意&#xff1a;关键字是java用了的&#xff0c;我们就不能用来作为&#xff1a;类名、变量名、否则会报错。 标识符&#xff1a; 标识符就是…

机器学习的一些知识点分享

下面数据集中&#xff0c;第2个样本的第4个属性的值是&#xff08; &#xff09;。 A 52 B 男 C 50 D 49 本题得分&#xff1a; 2分 正确答案&#xff1a; D 2.单选题 (2分) 10-折交叉验证是把数据集分成&#xff08; &#xff09;个子集&#xff0c;将其中&#xff…

EmploLeaks:一款针对企业安全的组织员工信息收集OSINT工具

关于EmploLeaks EmploLeaks是一款针对企业安全的组织员工信息收集OSINT工具&#xff0c;在该工具的帮助下&#xff0c;企业内部的安全人员和管理员可以有效地收集组织内员工的各种信息&#xff0c;并以此来判断组织内部的网络安全态势。 工作机制 首先&#xff0c;该工具会在…

MySQL库操作 表操作【详细解析】

MySQL MySQL是一个数据库软件 mysql mysql是一个“客户端—服务器”结构的软件 (1) a.客户端&#xff1a;主动发起请求的一方&#xff08;Client&#xff09; b.服务器&#xff1a;被动接收请求的一方&#xff08;Server&#xff09; 客户端和服务器之间通过网络 进行通信 (…

【软件测试】3.开发模型

目录 1.常见的开发模型 1.1瀑布模型 1.2螺旋模型 1.3增量模型和迭代模型 1.4敏捷模型 1.4.1特点&#xff1a; 1.5Scrum模型&#xff08;三个角色和五个重要会议&#xff09; 1.5.1三个角色&#xff1a; 1.5.2Scrum工作流程&#xff08;五个会议&#xff09; 1.6测试模…

移动应用开发实验四AlarmManager实现闹钟提醒

实验目的和要求 在Android Studio中&#xff0c;通过AlarmManager实现闹钟提醒。 点击“SET ALARM”后&#xff0c;采用Toast方式提示用于设定的闹钟成功&#xff0c;并包含设定的闹钟启用时间。 当闹钟生效时&#xff0c;采用AlertDialog实现闹钟题型&#xff0c;并通过Ale…

2023盘古石杯晋级赛 apk分析 WP

1. 涉案应用刷刷樂的签名序列号是[答案&#xff1a;123ca12a] 2. 涉案应用刷刷樂是否包含读取短信权限 无 3. 涉案应用刷刷樂打包封装的调证ID值是[答案&#xff1a;123ca12a] 4. 涉案应用刷刷樂服务器地址域名是[答案&#xff1a;axa.baidun.com] 代理模式抓个包 5. 涉案应用…

UE4 3D文字自动换行

效果&#xff1a;3D文字超过5位自动换行 1.随意输入一段字符串测试&#xff0c;创建string临时变量&#xff0c;用于迭代存储字符串 2.当字符串遍历至第“换行长度”&#xff08;我这里是5&#xff09;位时&#xff0c;附加一次空行

创新指南|将会话式AI聊天机器人纳入PLG增长战略

想象一个繁荣的数字城市广场&#xff0c;志同道合的人们在这里分享他们的激情、经验和知识。想象一个将房东与旅行者、顾客与司机、人们与他们喜爱的品牌无缝连接起来的平台。在这个世界里&#xff0c;用户交流促进增长&#xff0c;社区成为推动力。 如果您的应用程序天生不符…

P8802 [蓝桥杯 2022 国 B] 出差

P8802 [蓝桥杯 2022 国 B] 出差 分析 很明显&#xff1a;单源最短路径 没有负权边 dijkstra 1.存图 2.准备两个数组 dis[]&#xff1a;更新源点到各个点的距离 vis[]&#xff1a;标记是否访问 3.从源点开始&#xff0c;更新源点到与其邻接的点的距离&#xff0c;每次选…

鸿蒙OpenHarmony开发板解析:【特性配置规则】

特性 特性配置规则 下面介绍feature的声明、定义以及使用方法。 feature的声明 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 在部件的bundle.json文件中通过feature_list来声明部件的feature列…

MQTT 5.0 报文解析 03:SUBSCRIBE 与 UNSUBSCRIBE

欢迎阅读 MQTT 5.0 报文系列 的第三篇文章。在上一篇中&#xff0c;我们介绍了 MQTT 5.0 的 PUBLISH 及其响应报文。现在&#xff0c;我们将介绍用于订阅和取消订阅的控制报文。 在 MQTT 中&#xff0c;SUBSCRIBE 报文用于发起订阅请求&#xff0c;SUBACK 报文用于返回订阅结果…

Java通过百度地图API获取定位-普通IP定位

项目中有一个登录邮箱提醒的功能&#xff0c;需要根据IP地址获取定位信息&#xff0c;从而更好地提示用户账号登录的所在地。为此&#xff0c;花费了一些时间来实现这个功能。 在CSDN搜索了一下&#xff0c;发现关于获取定位的文章说明都不够详细&#xff0c;于是决定自己创作一…

为什么要学Python?学Python有什么用?

为什么要学Python&#xff1f;学Python有什么用&#xff1f; 在当今的数字化时代&#xff0c;编程已成为一项宝贵的技能。Python&#xff0c;作为一种流行的编程语言&#xff0c;因其易于学习和强大的功能而受到全球开发者的青睐。本文将探讨学习Python的原因和它的实际应用&am…

【操作系统期末速成】​操作系统概述(定义|功能|特征)|发展阶段和分类|结构设计|概念补充

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;操作系统&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到…

Nginx部署前后端分离项目

部署前后端分离项目&#xff0c;要求前端项目、后端项目、数据库分别部署在3台服务器 服务器准备 服务器名IP软件包前端192.168.99.137nginx后端192.168.99.139jar数据库192.168.99.100mariadb 1、前端服务器 yum install -y epel-release && yum install -y nginx…

官宣:vAsterNOS正式发布!开放网络操作系统免费试用!

近期&#xff0c;vAsterNOS&#xff08;设备模拟器&#xff09;正式发布&#xff0c;可以满足用户快速了解 AsterNOS、体验实际操作、搭建模拟网络的需求&#xff0c;可运行在GNS3、EVE-NG等网络虚拟软件中。 AsterNOS 网络操作系统是星融元为人工智能、机器学习、高性能计算、…

vCenter 7.3证书过期无法登录处理方法

登录报错&#xff1a;如下图 Exception in invking authentication handler [SSL: CERTIFICATE_VERIFY_FAILED] certificate vertify failed: certificate has expired(_ssl.c:1076) 处理方法1&#xff1a;推荐&#xff0c;可行 登录vCenter控制台&#xff0c;AltF3切换至命令…