Netty入门(七)使用SSL/TLS加密Netty程序
2018-06-18 01:07:49来源:未知 阅读 ()
为了支持 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 还有很多有用的方法,如下:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- logstash系列-入门整理 2020-06-10
- Java 入门教程 2020-06-09
- 这可能是目前最透彻的Netty讲解了... 2020-06-08
- RocketMQ4.4 入门进阶+实战 2020-06-08
- 聊聊 OAuth 2.0 的 token expire_in 使用 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash