请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
手把手教你为基于Netty的IM生成自签名SSL/TLS证书
微信扫一扫关注!

1、引言


对于IM聊天应用来说,为了提升安全性,对聊天消息加密是常规操作。

众所周之,Netty是高性能的Java NIO网络通信框架,因而用Netty来写IM是再正常不过了。网上关于为Netty生成、以及使用SSL/TLS证书的文章有很多,但由于各种原因,生成的证书要么是Netty中无法读取和使用,要么是代码不全或不具体导致根本配不通SSL/TLS加密。

正好这段时间专门为 MobileIMSDK 生成了一套测试证书,顺手把这个过程记录了下来,分享给大家。

本文要分享的是如何使用OpenSSL生成在基于Netty的IM中真正可用的SSL/TLS证书,内容包括:证书的创建、创建过程中的注意点,以及在Server端、Android端、iOS端、Java桌面端、H5端使用证书的代码范例。

cover-opti.png

注:对于那些付费购买了第3方权威CA机构签发的证书,他们都有相应的使用文档,这就没什么好说的。本文里的证书指的是不需要花钱的自签名证书

本文已同步发布于即时通讯网公众号,链接是:https://mp.weixin.qq.com/s/1N2WInPTSgsqpYvD0TQaaA

2、知识准备


► 如果你对IM系统毫无概念,建议先阅读《零基础IM开发入门(一):什么是IM系统?》系列文章,通俗易懂,适合小白。

► 如果你想系统学习IM开发相关的理论知识,比如网格编程、IM架构设计等,建议先阅读《新手入门一篇就够:从零开发移动端IM》。

如果你不了解Netty是什么,建议阅读以下几篇Netty的基础入门好文章:


► 如果你已掌握IM理论知识,同时也对Netty基本掌握,正准备动手实战,则可以阅读《基于Netty,从零开发IM》和《跟着源码学IM》这个系列文章,有各种入门级实战代码,图文并茂,适合学习。

► 如果你对IM、Netty已基本上手,但对IM安全方面的技术概念有点理不清,建议必读《基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等》。

3、什么是Netty


1.png

Netty是一个Java NIO技术的开源异步事件驱动的网络编程框架,用于快速开发可维护的高性能协议服务器和客户端。往通俗了讲,可以将Netty理解为:一个将Java NIO进行了大量封装,并大大降低Java NIO使用难度和上手门槛的超牛逼框架。(引用自《史上最通俗Netty框架入门长文:基本介绍、环境搭建、动手实战

PS:限于篇幅,对于Netty方面的入门知识就不再赘述,如有必要,请仔细跟着本文第二节“2、知识准备”里有关Netty的文章进行阅读。

4、什么是OpenSSL


2.png

OpenSSL是一个开放源代码的软件库,应用程序可以使用这个包来进行安全通信,它包括代码、脚本、配置和过程的集合。其主要库是以 C 语言所写成,实现了基本的加密功能,实现了 SSL 与 TLS 协议。OpenSSL整个软件包大概可以分成三个主要功能部分:SSL协议库、应用程序、密码算法库。

PS:OpenSSL的介绍就点到为止,如有兴趣,可仔细阅读《基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等》。

5、下载和安装OpenSSL


1)方法一:可以从OpenSSL的Github仓库下载源码自行编译(源码下载地址),对于一般使用者来说,自已编译着实有点麻烦,不推荐这么玩。

2)方法一:也可以从这个网站下载第3方编译好的OpenSSL安装程序(安装程序下载地址),这样上手简单快捷。具体可以参考《openssl安装教程(windows7系统,超详细)》这篇文章。

3)方法一:也可以直接用下面附件里的安装程序(这是我一直用的版本,版本较老,有兴趣可直接下载使用):
Openssl-windows-0.9.8k(52im.net).rar (874.97 KB , 下载次数: 26 , 售价: 1 金币)

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:IM通讯协议专题学习(六):手把手教你如何在Android上从零使用Protobuf下一篇:不为人知的网络编程(十五):深入操作系统,一文搞懂Socket到底是什么

本帖已收录至以下技术专辑

推荐方案
评论 5
作者您好,请问ssl证书可以放nginx配置吗?
引用:921124136 发表于 2023-02-20 17:59
作者您好,请问ssl证书可以放nginx配置吗?

这要看nginx需要什么样格式的证书了,你按它要求的格式生成即可。

本篇文章里,我是针对netty要求的格式和证书属性生成的专用证书,别的服务能不能用,这个还得专门去看待。

你可以看看阿里云那边权威CA签发的收费证书也是一个道理,会针对各种不同的应用去生成专用证书格式:
图片1.png
引用:JackJiang 发表于 2023-02-20 18:17
这要看nginx需要什么样格式的证书了,你按它要求的格式生成即可。

本篇文章里,我是针对netty要求的格 ...

好的
请问下,nginx的配置wss的ssl和netty 的ssl可以是同一个吗
引用:jeremy111 发表于 2023-04-25 20:15
请问下,nginx的配置wss的ssl和netty 的ssl可以是同一个吗

我没实践配过,但理论上可以
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部