Netty入门(七)使用SSL/TLS加密Netty程序
2018-05-14 10:45
441 查看
为了支持 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 还有很多有用的方法,如下:
相关文章推荐
- 配置 OpenLDAP 使用 SSL/TLS 加密数据通信
- Jdk1.6 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
- 使用openssl进行ssl/tls加密传输会话测试
- Apache的SSL/TLS加密
- [原创]使用 DES算法 任意字符串 加密解密程序1.0
- 用OpenSSL编写SSL,TLS程序 - Win32版
- WINDOWS SERVER 2003从入门到精通之使用证书在WEB服务器上设置SSL(下)
- [原创]使用 DES算法(包括3DES) 加密解密程序1.2[含源码]
- javaRMI使用入门程序及配置
- 使用C#开发SmartPhone程序入门1
- 用OpenSSL编写SSL,TLS程序 - Win32版
- WINDOWS SERVER 2003从入门到精通之使用证书在WEB服务器上设置SSL(上)
- 用OpenSSL编写SSL,TLS程序(4)
- 用OpenSSL编写SSL,TLS程序(2)
- J2EE入门视频教程第三讲——IDE使用高级技巧之程序调试
- 使用C#编写DES加密程序的framework
- 开源的Stunnel--通用SSL加密程序
- 使用SoftICE调试程序入门
- 用OpenSSL编写SSL,TLS程序(1)