Netty入门(七)使用SSL/TLS加密Netty程序

  为了支持 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值