Netty入门(七)使用SSL/TLS加密Netty程序
为了支持 SSL/TLS,Java 提供了 javax.net.ssl API 的类 SslContext 和 SslEngine 使它相对简单的实现解密和加密。Netty 利用该 API 实现了 ChannelHandler 的子类 SslHandler。下图为 Sslhandler 的数据流图:
- 加密的入站数据被 SslHandler 拦截,进行解密
- 数据被解密后,原始数据入站
- 原始数据经过 SslHandler
- SslHandler 加密数据并传递数据出站
下面是 SslHandler 的一个简单使用:
1 public class SslChannelInitializer extends ChannelInitializer<Channel> { 2 private final SslContext context; 3 private final boolean client; 4 private final boolean startTls; // 第一次请求是否加密 5 6 public SslChannelInitializer(SslContext context, boolean client, boolean startTls) { 7 this.context = context; 8 this.client = client; 9 this.startTls = startTls; 10 } 11 12 @Override 13 protected void initChannel(Channel ch) throws Exception { 14 // 给每个 SslHandler 实例使用一个新的 SslEngine 15 SSLEngine engine = context.newEngine(ch.alloc()); 16 engine.setUseClientMode(client); // 设置SslEngine是client或者是server模式 17 // 添加SslHandler到pipeline作为第一个处理器 18 ch.pipeline().addFirst("ssl", new SslHandler(engine, startTls)); 19 } 20 21 }
如上所示,SslHandler 使用 ChannelInitializer 添加到 ChannelPipeline。在大多数情况下,SslHandler 将成为 ChannelPipeline 的第一个 ChannelHandler。
SslHandler 还有很多有用的方法,如下:
转载于:https://www.cnblogs.com/coderJiebao/p/Netty07.html
Netty入门(七)使用SSL/TLS加密Netty程序相关推荐
- 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解
本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...
- 第四篇:网络安全,SSL/TLS加密技术
文章目录 一.前言 二.SSL/TLS 2.1 SSL/TLS是什么 2.2 SSL/TLS加密基本原理 2.3 SSL/TLS建立握手过程 三.CA & SSL Server & S ...
- 使用openssl进行ssl/tls加密传输会话测试
[小蜗牛嘻哈之作] 我们首先看看下面一段"对话": [root@pps ~]# openssl s_client -connect localhost:110 -starttls ...
- java 通过SSL/TLS加密https建立连接
这个项目是基于与Ruby客户端进行通信,经过查看源代码,发现对方是经过TLS加密通信.第一次调试,尝试用serversocket与对方进行沟通,可以收到数据,但是无法获取http的包头数据,因此,将先 ...
- https 中的SSL/TLS 加密
其实HTTPS从最终的数据解析的角度,与HTTP没有任何的区别,HTTPS就是将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全:而对于接收端 ...
- gRPC 的 SSL/TLS 加密认证
文章目录 简介 生成自签证证书 服务端 客户端 单向认证 双向认证 基于 Token 的单向认证 基于 Token 的双向认证 简介 传输层安全性协议(Transport Layer Security ...
- 用java写个简单的直播强求_全网最简单易懂的Netty入门示例,再不会用Netty我直播吃翔...
//server引导类 ServerBootstrap serverBootstrap = new ServerBootstrap(); //boss 对应 IOServer.java 中的接受新连接 ...
- SSL/TLS加密证书生成(一)
client为Nxlog或者rsyslog的server和client证书生成 生成证书应该是在server端生成的,server和client的证书都是在server端生成,生成的命令如下: 1.生 ...
- Netty入门教程——认识Netty
什么是Netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架. Netty 是一个广泛使用的 Java 网络编程框架(N ...
最新文章
- [js] MD5算法
- 兼容Silverlight4的实用的Silverlight可拖放工具类源代码
- python小数输出01_python:格式化输出(上)
- 洛谷 P2389 电脑班的裁员 解题报告
- 列表页时间日期标签靠显示html,帝国CMS列表页面list.var分别调用年月日,显示个性时间日期...
- ★ Linked List Cycle II -- LeetCode
- angularjs-控制form及radio,checkbox,select
- linux 源码 网络驱动,Linux网络驱动源码分析(一)
- 在React的render方法中使用箭头函数
- SQL时间格式化 转载备用~
- 《nftables相比iptables到底改变了什么》-- (作者:blog.csdn.net/dog250)
- 中国互联网100个Web2.0网站名单
- 一位清华学长的CTO成长之路 -- 不断的打破自己的边界
- 团队作业3 需求分析与系统设计
- 西门子PLC是怎么控制伺服电机的?
- GitLab安装并设置为开机启动
- 图片黑底漂白 PicGrayRemover
- 东原仁知服务招股书失效:主营业务严重依赖迪马集团,曾多次更名
- Web应用程序,简单的日志系统解决方案
- Java 数组和List的使用
热门文章
- 微信小程序 提示Toast
- Raspberry Pi 3B 安装Miniconda
- Java 打印菱形星块
- php5.2.10安装_安装 | 起步 | Laravel 5.2 中文文档
- 【十大经典排序算法】java实现--希尔排序(4)
- ios开发之UIView和UIViewController
- [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?
- Python 二分查找
- iOS之富文本(二)
- Linux(CentOs)下安装Phantomjs + Casperjs