当前位置: 首页 > news >正文

【Netty源码解读和权威指南】第38篇:Netty SSL TLS安全传输——HTTPS背后的Netty实现

上一篇【第37篇】Netty流量整形——优雅控制客户端发送速率
下一篇【第39篇】Netty内存泄漏检测机制源码解析——守护ByteBuf的"生死账本"


一、TLS握手流程

客户端 服务端 |------ClientHello----------->| (支持的加密套件) |<-----ServerHello------------| (选定加密套件+证书) |<-----Certificate-----------| (服务端证书) |<-----ServerHelloDone-------| (握手完成) |------ClientKeyExchange----->| (加密的预主密钥) |------ChangeCipherSpec------>| (切换加密模式) |------Finished-------------->| |<-----ChangeCipherSpec-------| |<-----Finished---------------| | | |<====加密通信开始==============>|

二、SslContext配置

// 服务端SSL配置SelfSignedCertificatecert=newSelfSignedCertificate();SslContextsslCtx=SslContextBuilder.forServer(cert.certificate(),cert.privateKey()).sslProvider(SslProvider.OPENSSL)// 优先使用OpenSSL.build();// 客户端SSL配置SslContextclientCtx=SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE)// 仅测试用.build();

三、SslHandler集成

// 服务端Pipelinepipeline.addLast(sslCtx.newHandler(ch.alloc()));// SSL加解密pipeline.addLast(newHttpServerCodec());// HTTP编解码pipeline.addLast(newHttpServerHandler());// 业务逻辑// 客户端Pipelinepipeline.addLast(clientCtx.newHandler(ch.alloc(),host,port));pipeline.addLast(newHttpClientCodec());pipeline.addLast(newHttpClientHandler());

四、OpenSSL vs JDK SSL

对比JDK SSLOpenSSL
性能基准快2-3倍
内存堆内堆外(更少GC)
依赖需安装OpenSSL
支持全平台Linux最佳

启用OpenSSL

// pom.xml<dependency><groupId>io.netty</groupId><artifactId>netty-tcnative-boringssl-static</artifactId></dependency>// 代码配置.sslProvider(SslProvider.OPENSSL)

五、完整HTTPS服务器

publicclassHttpsServer{publicstaticvoidmain(String[]args)throwsException{SelfSignedCertificatecert=newSelfSignedCertificate();SslContextsslCtx=SslContextBuilder.forServer(cert.certificate(),cert.privateKey()).build();EventLoopGroupboss=newNioEventLoopGroup(1);EventLoopGroupworker=newNioEventLoopGroup();try{newServerBootstrap().group(boss,worker).channel(NioServerSocketChannel.class).childHandler(newChannelInitializer<Channel>(){protectedvoidinitChannel(Channelch){ch.pipeline().addLast(sslCtx.newHandler(ch.alloc()));ch.pipeline().addLast(newHttpServerCodec());ch.pipeline().addLast(newHttpServerExpectContinueHandler());ch.pipeline().addLast(newSimpleChannelInboundHandler<HttpRequest>(){protectedvoidchannelRead0(ChannelHandlerContextctx,HttpRequestreq){Stringbody="Hello HTTPS!";FullHttpResponseresp=newDefaultFullHttpResponse(HTTP_1_1,OK,ctx.alloc().buffer().writeBytes(body.getBytes()));resp.headers().set(CONTENT_LENGTH,body.length());resp.headers().set(CONTENT_TYPE,"text/plain");ctx.writeAndFlush(resp);}});}}).bind(8443).sync().channel().closeFuture().sync();}finally{boss.shutdownGracefully();worker.shutdownGracefully();}}}

六、总结

步骤配置
证书SelfSignedCertificate(测试) / CA证书(生产)
SslContextSslContextBuilder配置Provider和证书
集成SslHandler添加到Pipeline首位
性能建议生产环境使用OpenSSL Provider

上一篇【第37篇】Netty流量整形——优雅控制客户端发送速率
下一篇【第39篇】Netty内存泄漏检测机制源码解析——守护ByteBuf的"生死账本"


http://www.gsyq.cn/news/1562826.html

相关文章:

  • 嵌入式GUI开发:emWin 2D图形库核心功能与性能优化实战
  • 2026青岛公认口碑好的全屋定制品牌门店选购指南 - 官方资讯
  • 淮南师范学院王牌专业主要学什么课程?未来的培养方向和就业领域是什么? - 寻茫精选
  • 2026年合肥理工学校最新发布招生办电话号码及报考流程一览 - 教育为先
  • 咸宁职业技术学院王牌专业在全国 / 省内排名第几?行业认可度高吗? - 寻茫精选
  • 洪梅镇TikTok短视频剪辑:新手必学的10个剪辑技巧 - 东莞选校指南
  • 2026年浙江GEO优化服务商实力榜单|本地企业AI搜索优化首选指南 - 936品牌测评网
  • 安徽水利水电职业技术学院的王牌专业有哪些?哪些专业性价比最高、最值得报? - 寻茫精选
  • 人脸检测实战:从传统方法到深度学习,构建鲁棒系统的完整指南
  • 安徽水利水电职业技术学院王牌专业在全国 / 省内排名第几?行业认可度高吗? - 寻茫精选
  • 上海家电维修 / 家电清洗|本地避坑指南,满分五星平台 | 2026首选一步到家 - 一步到家
  • 草莓目标检测数据集:农业AI视觉落地的最小可行方案
  • 咸宁职业技术学院王牌专业主要学什么课程?未来的培养方向和就业领域是什么? - 寻茫精选
  • Deepseek本地部署实战:MoE架构与SiLU激活函数的工程落地
  • 2026抖店拍单工具闭眼入:合规为王,一站式代发首选【抖掌柜】深度实测推荐 - 抖掌柜
  • MATLAB雷达CFAR检测仿真包:含多种算法实现、可视化结果与完整说明
  • 2026年铸铝门品牌实力盘点:十家值得关注的厂家与选购参考 - 门业观察
  • 广东农工商职业技术学院的王牌专业有哪些?哪些专业性价比最高、最值得报? - 寻茫精选
  • 2026年亲测三家京东E卡回收正规平台综合评分:折扣差异解析与安全变现操作全流程 - 鼎鼎收礼品卡回收
  • 零知识证明-FFS身份鉴别方案
  • 2026寄大件怎么省钱?个人寄件全流程+5折技巧 - 快递物流资讯
  • Claude Opus 4.6实测:前端工程化能力与认知写作方法论深度解析
  • 安徽水利水电职业技术学院的王牌专业有没有校企合作项目?实习和实训机会多不多? - 寻茫精选
  • 对口升学本科靠谱吗?推荐合肥理工学校! - 教育为先
  • 2026年安徽省初三中考成绩差考不上高中适合上什么学校??——推荐合肥理工学校! - 教育为先
  • 广东农工商职业技术学院王牌专业的师资强不强?有没有院士、国家级教学名师? - 寻茫精选
  • RetDec反编译器实战指南:从部署到恶意软件分析
  • Python股票价格预测实战包:随机森林多版本代码+全市场行情数据+逐行中文注释
  • Z Code+GLM 5.2:本地化AI编程工作流实战指南
  • 广东农工商职业技术学院王牌专业主要学什么课程?未来的培养方向和就业领域是什么? - 寻茫精选