主题:使用stunnel加密隧道对tcp数据进行加密传输。

开发环境:

客户端:

stunnel5 + Win10

服务端:

stunnel5 + Ununtu18.04(虚拟机) + Qt5.9.9

前言篇:

对于stunnel,前面博客有所提及,有兴趣可以自行观看,此处不再赘述。

在正式讲解之前,需要做一些说明:
1、 客户端和虚拟机需双向ping通;
2、 stunnel客户端配置文件:

此处的[test]可以自由命名,无所谓。
3、服务端stunnel配置文件:

此处的[mysql_test]可以自由命名,无关紧要。
4、确保客户端和服务端的stunnel进程已分别启动,查看1088端口和1099端口是否处于监听状态。
(1) 客户端的stunnel进程已启动,如下所示:

(2) 服务端的stunnel进程已启动,如下所示:

也可以查询服务端stunnel的日志,日志内容和客户端的基本一致。
5、与此同时,我们可以查询出客户端stunnel进程的1088端口 和 服务端stunnel进程的1099端口已处于监听状态。
(1) 客户端stunnel进程的1088端口已处于监听,如下所示:

(2) 服务端stunnel进程的1099端口已处于监听,如下所示:

正式篇:

1、开启客户端,服务端的stunnel进程,上述中我们已经开启;
2、建立客户端和服务端之间的加密隧道, 我们在客户端打开NetAssist网络调试工具,按图输入并连接,此时观看stunnel客户端,服务端打印的日志,可以看出,客户端和服务端之间的加密隧道已经成功建立,如下图所示:

(1) 客户端stunnel日志:

(2) 服务端stunnel日志:

(3) 此时的客户端端口:

(4) 此时的服务端端口:

3、好,回到服务端,stunnel存在的目的无非是对我们传输的数据进行加密,当从客户端加密的数据传输到服务端后,它会自动将解密后的数据传输到我们服务端指定的位置,按照服务端stunnel的配置文件,来自客户端加密的数据,经服务端解密后将传输到服务端的 127.0.0.1:1010位置处。
所以在服务端,我们需要还需要监听1010端口,获取来自客户端的数据。
此处我们采用QT进行快速写一个tcp服务器,并监听1010端口,代码非常简单,如下图所示:


运行结果如图所示:

此时我们运行此程序,并点击 listen 1010按钮,开启1010端口的监听…
4、回到客户端,我们在NetAssist中输入 一段json数据,
{ "sites": [ { "name":"ZhanSan" , "url":"www.runoob.com" }, { "name":"LiSi" , "url":"www.google.com" }, { "name":"WangWu" , "url":"www.weibo.com" } ] },然后点击发送,我们可以看到服务端接受到了数据,如下图所示,
(1) 客户端发送数据截图:


(2) 服务端接受数据截图:

(3) 那怎样判断数据被加密了,实际上我们通过抓包工具wireshark,可以清晰的看出,如下所示:
服务端的ip地址是:192.168.93.132,虚拟机采用的是NAT模式。
抓包时,选择的网卡是v8网卡。


客户端 -> 服务端的数据确实被加密了,当然这个加密过程无需我们关心,对于我们来说这个过程是透明的,我们看不到。同理我们可以从服务端 -> 客户端发送加密数据,点击服务端QT程序的 jiami write to client按钮,并看其效果,如下图所示:
我们在客户端中收到了来自服务端的数据:



至此,客户端 <-> 服务端的数据加密传输完毕。
我再解析一下client -> server的过程:在客户端,实际上我们发送的json数据,是发到了1088端口上,然后json数据会被加密传输到服务端的1099端口,而后经过解密达到服务端的1010端口。从server -> client亦如此。

5、断开客户端的1088端口,分别看看客户端和服务端的stunnel的日志
(1) 客户端stunnel日志:


表示发送了 358bytes数据到服务端,接受了来自服务端的 11bytes数据。
(2) 服务端stunnel日志:


表示发送了 11bytes数据到客户端,接受了来自客户端的 358bytes数据。

使用stunnel加密tcp数据传输相关推荐

  1. Stunnel 加密隧道搭建

    Stunnel (http://www.stunnel.org/)是一款可以加密网络数据的TCP连接,并可工作在Unix和Windows平台上,它采用Client/Server模式,将Client端的 ...

  2. 有jar包直接加密tcp请求报文_netty(十六)报文加密

    本次作实践,序列号承接 netty(十三)protobuf + 心跳 1 对称加密AES 服务端 pipeline.addLast(new LengthFieldBasedFrameDecoder(1 ...

  3. TCP原理之:TCP数据传输

    TCP原理之:TCP数据传输 TCP(Transmission Control Protocol)全称为传输控制协议, 它工作在网络七层模型中的第四层-传输层, 是一种面向连接的可靠的数据传递协议. ...

  4. 使用 Stunnel 加密

    大多数有网络意识的程序都应该使用密码术保护数据,以免数据被偷窥.但许多程序都没有这样做,可能是因为程序本身是旧应用程序,或者因为安全套接字层(Secure Sockets Layer,SSL)很难加入 ...

  5. 有jar包直接加密tcp请求报文_干货 | 终于有人能把TCP/IP 协议讲明白了!

    原标题:干货 | 终于有人能把TCP/IP 协议讲明白了! 如果你还对各类协议归属.作用也都傻傻分不清,那么你有必要详尽了解下 TCP/IP协议了. 一图看完本文 一. 计算机网络体系结构分层 计算机 ...

  6. stunnel加密隧道

    1.介绍 Stunnel是一款全局加密传输软件(http://www.stunnel.org/),工作在Unix和Windows平台上,作为代理,可以将应用程序发送的明文TCP流量加密,而无需重新配置 ...

  7. 协议簇:TCP 解析:TCP 数据传输

    简介 前面,我们分别介绍了 TCP 基础知识以及连接的建立和关闭,以及最重要的 Sequence Number 的概念. 本篇文章,我们来介绍一下 TCP 如何传输数据. 系列文章 协议簇:TCP 解 ...

  8. stunnel加密通道使用实践

    今天用了半天的时间把内网与外网服务器代理加密通道调通了.以后就可以以外网服务器的IP地址来访问网站了. 下边是今天架设通道的经验总结, stunnel服务器端安装及设置 我的服务器使用的是阿里云的ub ...

  9. 实现一款高可用的 TCP 数据传输服务器(Java版)

    1.netty能做什么 首先netty是一款高性能.封装性良好且灵活.基于NIO(真·非阻塞IO)的开源框架.可以用来手写web服务器.TCP服务器等,支持的协议丰富,如:常用的HTTP/HTTPS/ ...

最新文章

  1. Xtreme SuitePro ActiveX 2008 v12.0.1 更新了
  2. MySQL中的外键约束
  3. visual studio 2019 未能在命名空间“System.IO.Ports”中找到类型名“SerialPort”
  4. Hive在linux上的部署
  5. matlab createtask,Matlab批量与createjob
  6. php 树形结构实例,php:树形结构的算法实例
  7. 中英文对照 —— 手机 App/PC 端软件(系统)、互联网
  8. 杭电acm2034 人见人爱A-B
  9. Julia : HDF5、JLD2库、group、dataset
  10. Ubuntu_扩容后没有作用——解决办法是要重新分区
  11. 从源程序到可执行文件的四个过程
  12. goeasy+jquery+ckplayer实现动态实时视频弹幕
  13. Matlab 实时录音(声卡)及频谱显示
  14. 直观对比django与DRF
  15. 最新易企秀 微场景制作源码 易企秀去版权源码 带几百套模板
  16. 故障修复:mswinsck 加载失败
  17. Android软件开发Log实时查看方式(无需数据线)
  18. javaScript解决浏览器兼容问题,判断浏览器是ie或者Chrome
  19. Spring和Spring Boot区别
  20. 用notepad2替代记事本

热门文章

  1. 人脸识别、文字识别背后的方法,以及研究的热点和难点
  2. 解决h5 开发 ,设置手机字体大小微信设置字体大小 页面变形问题
  3. 你是一个高情商的人吗
  4. 金融云行至“深水区”
  5. Baumer相机baumer相机USB相机使用时出现USB驱动安装失败,导致相机无法使用
  6. 【安卓】安卓考试重点总结
  7. CSS - 移动端布局(二)移动端适配
  8. N5766A lan口驱动(Qt msvc2017 32位实现)
  9. java避免NPE的方法
  10. 晓庄学院计算机音乐,南京晓庄学院音乐学院新媒体时代高校音乐课程的改革与创新...