为了支持 SSL/TLS,Java 提供了 javax.net.ssl API 的类 SslContext 和 SslEngine 使它相对简单的实现解密和加密。Netty 利用该 API 实现了 ChannelHandler 的子类 SslHandler。下图为 Sslhandler 的数据流图:  

  

  1. 加密的入站数据被 SslHandler 拦截,进行解密
  2. 数据被解密后,原始数据入站
  3. 原始数据经过 SslHandler
  4. 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程序相关推荐

  1. 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

    本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...

  2. 第四篇:网络安全,SSL/TLS加密技术

    文章目录 一.前言 二.SSL/TLS 2.1 SSL/TLS是什么 2.2 SSL/TLS加密基本原理 2.3 SSL/TLS建立握手过程 三.CA & SSL Server & S ...

  3. 使用openssl进行ssl/tls加密传输会话测试

    [小蜗牛嘻哈之作] 我们首先看看下面一段"对话": [root@pps ~]# openssl s_client -connect localhost:110 -starttls ...

  4. java 通过SSL/TLS加密https建立连接

    这个项目是基于与Ruby客户端进行通信,经过查看源代码,发现对方是经过TLS加密通信.第一次调试,尝试用serversocket与对方进行沟通,可以收到数据,但是无法获取http的包头数据,因此,将先 ...

  5. https 中的SSL/TLS 加密

    其实HTTPS从最终的数据解析的角度,与HTTP没有任何的区别,HTTPS就是将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全:而对于接收端 ...

  6. gRPC 的 SSL/TLS 加密认证

    文章目录 简介 生成自签证证书 服务端 客户端 单向认证 双向认证 基于 Token 的单向认证 基于 Token 的双向认证 简介 传输层安全性协议(Transport Layer Security ...

  7. 用java写个简单的直播强求_全网最简单易懂的Netty入门示例,再不会用Netty我直播吃翔...

    //server引导类 ServerBootstrap serverBootstrap = new ServerBootstrap(); //boss 对应 IOServer.java 中的接受新连接 ...

  8. SSL/TLS加密证书生成(一)

    client为Nxlog或者rsyslog的server和client证书生成 生成证书应该是在server端生成的,server和client的证书都是在server端生成,生成的命令如下: 1.生 ...

  9. Netty入门教程——认识Netty

    什么是Netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架. Netty 是一个广泛使用的 Java 网络编程框架(N ...

最新文章

  1. [js] MD5算法
  2. 兼容Silverlight4的实用的Silverlight可拖放工具类源代码
  3. python小数输出01_python:格式化输出(上)
  4. 洛谷 P2389 电脑班的裁员 解题报告
  5. 列表页时间日期标签靠显示html,帝国CMS列表页面list.var分别调用年月日,显示个性时间日期...
  6. ★ Linked List Cycle II -- LeetCode
  7. angularjs-控制form及radio,checkbox,select
  8. linux 源码 网络驱动,Linux网络驱动源码分析(一)
  9. 在React的render方法中使用箭头函数
  10. SQL时间格式化 转载备用~
  11. 《nftables相比iptables到底改变了什么》-- (作者:blog.csdn.net/dog250)
  12. 中国互联网100个Web2.0网站名单
  13. 一位清华学长的CTO成长之路 -- 不断的打破自己的边界
  14. 团队作业3 需求分析与系统设计
  15. 西门子PLC是怎么控制伺服电机的?
  16. GitLab安装并设置为开机启动
  17. 图片黑底漂白 PicGrayRemover
  18. 东原仁知服务招股书失效:主营业务严重依赖迪马集团,曾多次更名
  19. Web应用程序,简单的日志系统解决方案
  20. Java 数组和List的使用

热门文章

  1. 微信小程序 提示Toast
  2. Raspberry Pi 3B 安装Miniconda
  3. Java 打印菱形星块
  4. php5.2.10安装_安装 | 起步 | Laravel 5.2 中文文档
  5. 【十大经典排序算法】java实现--希尔排序(4)
  6. ios开发之UIView和UIViewController
  7. [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?
  8. Python 二分查找
  9. iOS之富文本(二)
  10. Linux(CentOs)下安装Phantomjs + Casperjs