15. 使用stunnel加密tcp数据传输

news2024/12/26 22:29:38

主题:使用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数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaSE(包、封装、static用法、代码块)

1.包 &#xff08;文件夹&#xff09; 为了更好的管理类&#xff0c;把多个类收集在一起成为一组&#xff0c;称为软件包。 在Java中也引入了包&#xff0c;包是对类、接口等的封装机制的体现&#xff0c;是一种对类或者接口等的很好的组织方式&#xff0c;比如&#xff1a;一…

【细读JS忍者秘籍】深入生成器函数的底层原理

深入生成器函数的底层原理 分析执行上下文 生成器函数本质上还是一个_函数_&#xff0c;所以它的执行离不开 执行上下文 function* generator() {console.log("status1");yield "hello";console.log("status2");yield "world";}let…

Web入门开发【七】- 运行原理

欢迎来到霍大侠的小院&#xff0c;我们来学习Web入门开发的系列课程。 首先我们来了解下这个课程能学到什么&#xff1f; 1、你将可以掌握Web网站的开发全过程。 2、了解基础的HTML&#xff0c;CSS&#xff0c;JavaScript语言。 3、开发自己的第一个网站。 4、认识很多对编…

学到羊之Kafka

1 kafka 是啥 Kafka 是一款开源的消息引擎系统&#xff0c;用来实现解耦的异步式数据传递。即系统 A 发消息给到 消息引擎系统&#xff0c;系统 B 通过消息引擎系统读取 A 发送的消息&#xff0c;在大数据场景下&#xff0c;能达到削峰填谷的效果。 2 Kafka 术语 Kafka 中的分…

性能测试要学习哪些知识?全在这里了

基础&#xff1a;   完整的性能测试流程     需求-计划-方案-环境搭建-用例设计-数据准备-场景设计-脚本开发-脚本执行-结果分析-问题反馈-性能调优-结果报告   性能指标     TPS&#xff0c;QPS&#xff0c;RPS&#xff0c;HPS&#xff0c;RT&#xff0c;VU&#…

【Pandas入门教程】在Pandas中如何创建plots

在Pandas中如何创建plots 来源&#xff1a;Pandas官网&#xff1a;https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 文章目录在Pandas中如何创建plots导包数据集准备【小结】导包 import pandas as pd import matplotlib.pyplot as plt数据集准备…

力扣(LeetCode)200. 岛屿数量(C++)

深度优先遍历 求连通块数量。可以遍历所有格子&#xff0c;当格子是岛屿&#xff0c;对岛屿深度优先遍历&#xff0c;找到整个岛&#xff0c;并且将遍历的岛屿标记&#xff0c;以免重复遍历&#xff0c;或递归死循环。标记可以使用状态数组&#xff0c;也可以修改格子的值。本…

SQL注入渗透与攻防(十)之加解密注入和堆叠注入

目录 SQL注入之加解密注入 案列演示 SQL注入之堆叠注入 案列演示 SQL注入之加解密注入 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一&#xff0c;Base64就是一种基于64个可打印字符来表示二进制数据的方法。 案列演示 这里我们拿sql-libs的第二十一关来进行演…

学习TrustZone可以参考的资料

最近看到了一篇学习资料分享的&#xff0c;感觉可以转过来做个记录&#xff0c;除去前辈分享的资料以外&#xff0c;我还觉得ATF的源码里面的DOC目录下的资料也是很不错的&#xff0c;起码可以让你对BL31有个比较不错的认识。当然那个有点太细节了。 最近看PSA安全技术交流微信…

30多岁想转行,零基础学编程,来得及吗?

“30多岁想转行&#xff0c;零基础学编程&#xff0c;来得及吗&#xff1f;能找到好工作吗&#xff1f;”这类问题&#xff0c;总是反复出现。尤其是最近我受《自学是门手艺》鼓舞&#xff0c;也借着参与 xue.cn 的契机想要把 python 学的全面而完整&#xff0c;也总有朋友找我…

从工地打工,到狂揽10个大厂offer、副业赚100万:培训班出来的程序员是怎么做到的?

七年前我 985 毕业却沦落到工地打工&#xff0c;七年后我已经收到了 10 个大厂 offer 。 你好&#xff0c;我是吴师兄&#xff0c;一位曾经的学霸毕业只能去工地&#xff0c;而如今大厂 offer 拿到手软&#xff0c;Github 全球 TOP100 算法仓库创作者&#xff0c;公众号五分钟…

eclipse和sts安装lombok

eclipse和sts安装lombok 说明 sts 是 eclipse集成springboot的开发环境 所以 sts 和 eclipse 安装 lombok 步骤基本一样 参考网址: https://blog.csdn.net/qq_39826207/article/details/119007580?ops_request_misc%257B%2522request%255Fid%2522%253A%252216708973141680…

算法day57|647,516

目录 647. 回文子串 516.最长回文子序列 动态规划总结篇 647. 回文子串 dp数组的定义 dp[i][j]代表的是区间[i,j]的字串是否为回文字符&#xff0c;如果dp[i][j]为true,否则为false 递推公式 如果s[i]和s[j]相等的话 1.ij 为同一个字符&#xff0c;dp[i][j] True 2 i与j相差1…

Kafka大厂高频面试题:在保证高性能、高吞吐的同时保证高可用性

Kafka的消息传输保障机制非常直观。当producer向broker发送消息时&#xff0c;一旦这条消息被commit&#xff0c;由于副本机制&#xff08;replication&#xff09;的存在&#xff0c;它就不会丢失。但是如果producer发送数据给broker后&#xff0c;遇到的网络问题而造成通信中…

火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 在精细化运营的时代&#xff0c;运营活动同样需要有精细化的策略&#xff0c;例如在年末大促活动中&#xff0c;设计 APP 弹窗提醒、满减、会员领券时&#xff0c;我…

C#语言实例源码系列-实现批量更改文件名称大小写或扩展名

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

DeepLearning_Note

这里写目录标题深度学习框架深度学习开发万能公式模型的网络设计和开发&#xff1a;激活函数&#xff1a;几个数据参数&#xff1a;神经网络的输出零碎知识点&#xff1a;深度学习框架 深度学习开发万能公式 ① 问题定义 ② Paddle.vision.datasets&#xff08;内置数据集&am…

【ROS参数服务器】

参数服务器是以共享方式实现不同节点间数据交互的通信方式。主要用于存储多节点共享的数据&#xff0c;类似于全局变量。ROS中的参数服务器主要包含三个角色&#xff0c;分别是ROS Master(节点管理者)、Talker(参数设置者)、Listener(参数使用者)&#xff0c;其中Talker和Liste…

创新京东T7开创“新算法宝典”,图文并茂,全新演绎,太酷了

导言 算法是一门学问&#xff0c;但却总遭到一些程序员的冷落。现在的开发人员&#xff0c;更热衷于编程语言的修炼&#xff0c;以应付面试需求时的需要&#xff0c;所以对算法的学习&#xff0c;稍许忽略了些。实际上&#xff0c;近些年来&#xff0c;各互联网公司对于算法的…

【知识梳理】前端路由的两种模式

一、概述 这是几年前写的的一篇文章&#xff0c;发在了简书上面&#xff0c;现在看来仍然有一些不足&#xff0c;所以再次整理一下发在掘金。 二、什么是单页面应用&#xff08;SPA&#xff09;&#xff1f; 首先我们需要了解一下前置的基础知识————SPA&#xff08;单页面…