Nginx实现tcp代理并实现TLS加密

news2024/11/24 9:08:39

Nginx源码编译

        关于nginx的搭建配置具体参考笔者之前的一篇文章:实时流媒体服务器搭建试验(nginx+rtmp)_如何在线测试流媒体rtmp搭建成功了吗-CSDN博客中的前半部分;唯一变化的是编译参数(添加stream模块并添加其对应ssl模块):

./configure --prefix=/usr/local/nginx --with-http_stub_status_module \
--with-http_ssl_module --with-stream --with-stream_ssl_module \
--with-stream_realip_module --with-openssl=../openssl-1.0.1f --without-http_gzip_module

Tcp代理配置实验

          在配置文件nginx.conf中增加stream模块的配置,具体如下:

# lijd add 2023-11-4
stream {
    upstream backend {
        server 192.168.97.50:54321;
	}
	
	server {
		listen 12345 ssl;
		
		proxy_connect_timeout 60s;
        proxy_timeout 60s;
        proxy_pass backend;
    }
}
# lijd add end

          说明:真是的tcp服务器为:192.168.97.50,端口:54321;nginx代理服务器地址为:192.168.97.51,端口:12345。实验结果截图如下:

        当本地客户端(192.168.80.67)连接代理服务器192.168.97.51的12345端口时,nginx的代理进程会与真实的后台服务器(192.168.97.50)的54321端口创建一个tcp连接,如下图:

        客户端与服务器之间的通信成功连接并发送数据,演示如下图:

Tcp加密通道配置实验

生成CA

        首先通过系统自带的openssl生成一套自己的CA跟服务器证书、客户端证书,具体命令如下:

==============================生成CA相关内容===============================
# 为CA生成私钥
openssl genrsa -out private/ca.prikey 2048

# 为CA机构生成公钥
openssl rsa -in ca.prikey -pubout -out ca.pubkey

# 为CA生成自签名证书
openssl req -new -x509 -days 3650 -key private/ca.prikey -out ca.cert

===========================生成服务器证书相关内容============================
# 生成服务器私钥
openssl genrsa -out server/ser.prikey 2048

# 生成服务器证书申请文件
openssl req -new -key server/ser.prikey -out server/ser.csr

# 生成由CA签名过的服务器证书
openssl x509 -req -days 365 -in server/ser.csr -CA ca.cert -CAkey private/ca.prikey -CAcreateserial -out server/ser.cert

===========================生成客户端证书相关内容============================
# 生成客户端私钥
openssl genrsa -out client/cli.prikey 2048

# 生成客户端证书申请文件
openssl req -new -key client/cli.prikey -out client/cli.csr

# 生成由CA签名过的客户端证书
openssl x509 -req -days 365 -in client/cli.csr -CA ca.cert -CAkey private/ca.prikey -CAcreateserial -out client/cli.cert

         生成的所有证书如下:

 TLS代理实验

        实验的环境跟上面的tcp代理配置实验相同,nginx.conf的配置文件添加SSL的一些基本配置,具体如下:

# lijd add 2023-11-4
stream {
    upstream backend {
        server 192.168.97.50:54321;
	}
	
	server {
		listen 12345;
		
		proxy_connect_timeout 60s;
        proxy_timeout 60s;
        proxy_pass backend;

        # 设置nginx与后台代理服务直接的tcp通信是否为SSL协议加密
        proxy_ssl off;
		
		# 设置使用的SSL协议版本
		ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 SSLv2;      
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
		
        # 设置服务端使用的密码套件
        ssl_certificate      /lijd/CA/server/ser.cert;
        ssl_certificate_key  /lijd/CA/server/ser.prikey;
		
        ssl_session_cache   shared:SSL:10m;		# SSL TCP会话缓存设置共享内存区域名为
        
		# SSL,区域大小为10MB
        ssl_session_timeout 10m;				# SSL TCP会话缓存超时时间为10分钟 
    }
}
# lijd add end

        注意:proxy_ssl参数开关表示:nginx代理与后台真是的tcp服务器直接是否需要SSL加密。

        由于本地客户端实现加密通道认证测试比较麻烦,笔者在这里想了一个办法,利用浏览器的https的请求特性,模拟一个tcp加密客户端,实现与服务器通信。如下图:

        点击红色的继续转网页如下图:

         可以看到被nginx代理的真实的tcp服务收到了来自浏览器的应用请求数据。再用服务器工具发一串字符串客户端也会收到(注意:浏览器收到数据时间比较长,具体原因没有仔细研究。),如下图:

        同事在nginx代理端查询的代理连接如下图:

         至此,通过nginx代理TLS加密通道实验已经完结。本章主要讨论的是如下图结构:

        有兴趣的同学可以研究一下nginx代理与客户端、服务器双向都为TLS加密通道。此时nginx的配置中proxy_ssl参数需要设置成on(默认为on,实验时在这卡了半天),这时就需要后台TCP服务器支持TLS加密。

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

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

相关文章

竞赛选题 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

java中拼接“

params " " paramName "\"" paramValue "\"";

为什么说数据安全运维难?有好用的数据安全运维平台吗?

随着息技术的快速发展,不少企业在实行数字化转型,同时也面临着越来越多的数据安全运维挑战。不少企业都觉得数据安全运维难,都在找好用的数据安全运维平台。今天我们就来聊聊为什么说数据安全运维难?以及是否有好用的数据安全运维…

指纹浏览器有什么用?盘点指纹浏览器八大应用场景

在网络世界中,浏览器指纹一词早已耳熟能详。比如你用的浏览器类型、设备信息,甚至是你的操作习惯等等这些浏览器指纹信息可以让网站轻松识别出你的身份,把你的信息发送给第三方的广告商,然后匹配你的情况进行广告营销。 即使在清除…

广州小程序开发公司怎么找?

在当今的数字化时代,小程序已经成为了企业拓展业务、提升品牌影响力的重要工具。广州作为国内经济中心之一,拥有众多的企业和商家,因此对于小程序开发的需求也日益增长。那么,如何在广州找到一家专业、可靠的小程序开发公司呢&…

六种最常见的软件供应链攻击

软件供应链攻击已成为当前网络安全领域的热点话题,其攻击方式的多样性和复杂性使得防御变得极为困难。以下我们整理了六种常见软件供应链攻击方法及其典型案例: 软件供应链攻击已成为当前网络安全领域的热点话题,其攻击方式的多样性和复杂性…

TSN协议解读系列 | (3) Qci:说书唱戏劝人方

你是谁?你从哪里来?你到哪里去?这是柳国旅问的最多的三个问题。他总在想,上辈子的自己一定是一个哲学家,不然也不会和这三个问题的关系如此密切。他站的笔挺,耳边是蝉鸣,眼前是蓝天,…

定岗定编设计:企业职能部门定岗定编设计项目成功案例

一、客户背景及现状分析 某大型车辆公司隶属于某央企集团,建于20世纪60年代,是中国高速、重载、专用铁路车辆生产经营的优势企业,轨道车辆制动机研发制造的主导企业,是隶属于国内最大的轨道交通设备制造上市企业的骨干二级公司。公…

JVM虚拟机:垃圾回收器之ParNew(年轻代)

本文重点 在前面的课程中,我们学习了新生代的垃圾回收器PS,本文我们将学习新生代的另一个垃圾回收器ParNew。 工作状态 这个垃圾回收器使用多线程进行垃圾回收,在垃圾回收时,会STW(stop-the-world)暂停其它所有的工作线程直到它的收集结束,如下所示: 配置 -XX:+UserP…

南昌大学漏洞报送证书

获取来源:edusrc(教育漏洞报告平台) url:https://src.sjtu.edu.cn/ 兑换价格:20金币 获取条件:南昌大学任意中危或以上级别漏洞

Matlab论文插图绘制模板第125期—特征渲染的三维气泡图

在之前的文章中,分享了很多Matlab三维气泡图的绘制模板: 进一步,再来分享一下特征渲染的三维气泡图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。有需要的…

编程系统化教程目录,中文编程工具下载

图下图是编程工具界面,其构件板构件非常丰富。想学编程,可以点击最下方卡片—— 软件下载——免费自由版软件下载及教程,了解详细资讯。 编程系统化教程视频课程总目录 链接,点击下方链接进入 https://jywxz.blog.csdn.net/art…

Linux的常见指令(三)

目录 一、管道 | 二、find 三、which 四、grep 五、zip/unzip 六、alias 七、输出重定向与输入重定向 1、echo 2、输出重定向 3、输入重定向 八、tar 九、bc 十、uname -r 十一、热键 一、管道 | 我们首先创建一个下面这样的文件 前面我们知道了使用head和tail分…

springboot调用第三方接口json转换成对象

请求接口是一个比较常见的需求,接口返回一般是一个json类型,需要进行组装成对应的类,例 {"status_code": 200,"message": "success","data": {"cost": 286.6933,"bom_list": […

C++结构体内存对齐

文章目录 介绍对齐数顺序问题结构体有效对齐数计算数组对齐 介绍 结构体的大小并不是简单地将每个结构体成员的大小相加就能得到。 cpu一次能读取多少内存要看数据总线是多少位,如果是16位,则一次只能读取2个字节,如果是32位,则…

【原理篇】三、SpringBoot自动配置原理

文章目录 0、背景demo1、自动配置思路2、META-INF/spring.factories3、Redis自动配置4、自定义一个自动配置5、排除SpringBoot内置自动配置类的加载6、补充点:ApplicationContextAware接口 0、背景demo 用一个循序渐进的示例来体验属性配置,方便后面理解…

62、使用python进行rk3588开发板进行推流亚马逊云服务上,进行实时播放

基本思想:之前写了一套c++的推理和视频编解码,使用rk3588的mpp硬件进行编码和解码,然后使用RTSPServer进行推流,总是有问题,虽然可以使用ffplay和vlc进行拉取和播放,但是就是无法使用gstreamer推流到亚马逊云服务上,因为项目需求的紧急,所以先用python把流程跑同,后续…

【机器学习】Kmeans聚类算法

一、聚类简介 Clustering (聚类)是常见的unsupervised learning (无监督学习)方法,简单地说就是把相似的数据样本分到一组(簇),聚类的过程,我们并不清楚某一类是什么(通常无标签信息)&#xff0…

Stable Diffusion被爆包含性别、种族歧视!比AI更可怕的是人类的偏见......

夕小瑶科技说 原创 作者 | 付奶茶、王二狗最近,华盛顿邮报的一篇报道引起了“奶茶”我的关注! 报道中提到AI图像生成器已经开始暴露出它们学到的偏见。比如将非洲人刻板地视为原始,将领导者默认为男性,将囚犯一般视为黑人。 为了…

内衣专用洗衣机怎么样?家用小洗衣机推荐

最近这两年在洗衣机中火出圈的内衣洗衣机,它不仅可以清洁我们较难清洗的衣物,自带除菌功能,可以让衣物上的细菌,还能在清洗的过程中呵护我们衣物的面料,虽然说它是内衣洗衣机,它的功能不止可以清洗内衣&…