nginx(六十八)proxy模块(八)nginx与上游的ssl握手

news2025/2/25 17:59:31

一   nginx作为客户端上游的SSL/TLS握手

理解上: nginx作为'客户端',此时类似'浏览器'的角色,发请求建立连接

nginx作为server端与下游进行SSL/TLS握手

①  nginx与后端选择什么样的协议

1)如果'nginx与上游'是局域网内,一般通过'http'建立请求,不需要进行'tls'加密

2)nginx与上游需要'ssl/tls握手'场景 -->  '正向代理

   备注: 一般上游服务是'走公网的合作方'的服务,且对'安全级别'要求较高 -->'CDN'之类的

nginx作为反向代理,当后端为https时的一些细节和原理

(1)nginx作为客户端转发https请求时

①  proxy_ssl_ciphers

说明: nginx作为'客户端'自己支持的'加密套件'

②  proxy_ssl_server_name

思考:一个ip绑定'多个域名'很常见,为什么'使用off','默认不启用 SNI'呢?

补充: 只有sslv3和tls1.0'以后'才支持'SNI'

+++++++++++++  "设置off  没有启动SNI现象"  +++++++++++++ 

现象:由于没启用SNI,TLS握手的时候,'上游服务器不知道'用那个域名的证书便使用了'默认'证书返回

说明:当'on'时,在ssl握手时默认'$proxy_host'传给上游服务器,以便'上游服务器'知道用哪个证书

SNI的理解

③  proxy_ssl_certificate

说明: nginx作为客户端自己的'客户端证书'

④  proxy_ssl_certificate_key

说明: nginx作为'客户端'自己的'私钥'

⑤  proxy_ssl_password_file

⑥  proxy_ssl_protocols

说明: nginx作为'客户端',发起请求进行'SSL'握手的'TLS'版本

⑦  proxy_ssl_session_reuse 

 (2)nginx作为客户端校验上游服务器的证书

说明: nginx一般'不校验'上游'证书'的有效性

①  proxy_ssl_verify

1)​'proxy_ssl_server_name off没有启用SNI',导致TLS握手时候'上游'可能返回一个'默认'证书

2) 虽然'证书返回的不对',但'请求不受影响',HTTPS请求上游时'默认不验证'上游服务器返回的证书

②  proxy_ssl_verify_depth 

相关参考

③  proxy_ssl_certificate

④   proxy_ssl_trusted_certificate

说明: 用这个'签发证书的CA'去校验'上游'服务器返回的'证书'是否是该'CA'签发的

⑤  proxy_ssl_name

1)​'proxy_ssl_server_name on 启用SNI',默认使TLS与'上游'握手时候插入一个'SNI'

2)默认值是'$proxy_host',可以自定义'插入的SNI'

配置CDN的回源SNI 

(3)小结

二     nginx作为客户端与上游ssl握手报错汇总 

(1)案例1

根因: nginx作为客户端没有开启'SNI',导致与'上游'ssl'握手失败'

①  客户端现象

②  nginx记录日志

细节: nginx如果作为'代理服务器'在向'上游'转发请求时报错,'access和error'都有日志记录

access.log:主要表现'upstream_addr是-'表示'没有选中'server,同时status状态码'502'

error.log: 

   关键字: 'SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'

③  根因分析

④  解决策略

server {

  server_name  www.wzj.com;

  resolver 8.8.8.8 valid=60s;

  set $name www.wzj.com;

  proxy_pass https://${name};

  # 开启'SNI',发送'Client Hello',插入​'proxy_ssl_name'指令的值,默认是'$proxy_host'

  proxy_ssl_server_name on;
}

(2)案例2

场景:  nginx作为'反向代理'的时候,后端只支持http协议,但是却配置了https

根因: 上游不支持'https',但是nginx在'proxy_pass'中配置了'https'协议

关键字:'unknown protocol' 

(3)案例3

①  上游没有返回Server Hello

案例解读

1)现象: 三次'握手'成功后,nginx发送了'Client hello'报文,但'上游'却没有回Server hello

 '表现'形式: curl -kv  https://www.wzj.com

2)最终导致'超时',连接'断开'

解读: 三次握手成功了说明'网络、防火墙'是没有问题的,一般是通信链路中间有'代理'服务做转换导致

http和https配置相同端口导致 

(4)案例4

关键字: 'wrong version number'

关联'指令': proxy_ssl_session_reuse on

 

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

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

相关文章

详解__int128,最大可用整数类型

前言:有些题目需要的数值刚好比 long long 的最大值大那么一点点,那么我们就可以用__int128 来搏一搏(并不是所有OJ都支持这个数据类型,受编译标准影响) 最大值是多少 int 最大值:2^(32-1)-1【受电脑字长影…

碳中和专题:碳足迹核算、碳中和顶刊论文、碳排放交易2022

(1)碳中和顶刊论文 1、数据来源:自身 2、具体内容: 01周宏春:碳循环经济内涵、实践及其碳中和的深远影响.pdf 02谢和平:碳中和目标下煤炭行业发展机遇.pdf 03秦阿宁:碳中和背景下的国际绿色技…

【FPGA】基于状态机实现自动售货机模拟

文章目录一、售货机功能二、售货机状态分析及模块划分三、代码实现四、上板验证一、售货机功能 此自动售货机模拟基于EP4CE6F17C8开发板实现,用按键,led灯,数码管表示各个输入输出 功能: 此自动售货机可以选择A(三元…

[激光原理与应用-21]:《激光原理与技术》-7- 激光技术大汇总与总体概述

目录 前言: 第1章 什么是激光技术 1.1 什么是激光技术 1.2 激光技术的分类方法 第2章 激光的应用技术 2.1 激光加工技术 2.2 激光快速成型 2.3 激光切割 2.4 激光焊接 2.5 激光雕刻 2.6 激光打孔 2.7 激光蚀刻 2.8 激光手术 2.9 激光武器 2.10 激光能…

详解诊断数据库ODX-D

文章目录 前言一、ODX-D具体内容是什么?二、ODX企标中关于ODX-D定义内容三、ODX-D在CANdelaStudio以及ODXStudio中定义内容总结前言 ​又是一周末,静下心码下字,将ODX这个Topic补充完整。 ODX含义是开放式诊断数据交互,是欧洲那边提出诊断数据架构,详情可如下图: 核心…

区间信息维护与查询【树状数组 】 - 原理2 多维树状数组

区间信息维护与查询【树状数组 】 - 原理2 多维树状数组 我们已经知道一维树状数组修改和查询的时间复杂度均为O (logn),可以扩展为m 维树状数组,其时间复杂度为O (log ^m n ),对该算法只需加上一层循环即可。二维数组a [n ][n ]、树状数组c…

创建TCP通信与粘包问题解决

创建TCP通信 nodeJS的Net模块实现了底层通信接口 通信过程 创建服务端:接收和回写客户端数据创建客户端:发送和接收服务端数据数据传输: 内置服务事件和方法读写数据 通信事件 listing事件:调用server.listen方法之后触发con…

介绍 10 个有用的 Flutter 软件包

介绍 10 个有用的 Flutter 软件包 原文 https://genotechies.medium.com/introducing-10-useful-flutter-packages-1252c4b75fa7 前言 FLutter 软件包使您的开发简单快速。然而,有利有弊。有时候,如果从头开始开发这个特性将是有益的,因为可定…

Hive日分区表如何快速导入到StarRocks

1、背景 业务现状:集团使用FineBI做数据呈现及报表分析工具,经过近两年的BI建设,供应链域及营销域的BI建设已初具规模并体系化。数仓规模60TB,FineBI数据集约8000个,BI挂出报表数约1600个,报表月增幅在40左…

非凡社群管理之社群管理有什么内容

社群作为一个非常重要的私域流量池,它本身就是一个提升用户价值的利器。但如果管理不好社群,那么也是无济于事的。 社群小助手提示:高效管理社群,以下这五个方面要做好。 一,社群为用户解决问题,让群成员都…

iwebsec靶场 SQL注入漏洞通关笔记6- 宽字节注入

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入(布尔型盲注&#…

【ML特征工程】第 7 章 :通过K-Means 模型堆叠进行非线性特征化

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

计算机视觉之目标检测(object detection)《1》

在计算机视觉领域,除了识别图像并分类之外,我们很多时候想关注图像里面一些感兴趣的目标,比如视频监控中寻找一个或多个嫌疑犯;无人驾驶需要识别车辆、行人、红绿灯、路障等等,都是需要去及时掌握画面中的不同目标。我…

古瑞瓦特能源通过聆讯:上半年营收23亿 IDG投资9亿持股6.5%

雷递网 雷建平 11月26日古瑞瓦特能源(简称:“Growatt Technology”)日前递交招股书,准备在香港上市。上半年营收23.45亿古瑞瓦特能源于2011年在深圳成立,是一家分布式能源解决方案提供商,专注于可持续能源发…

Crack:GoJS 2.2.18 -2022-09-08 update

使用 JavaScript 和 TypeScript 为 Web 构建图表 流程图 构建交互式流程图或流程图。让您的用户使用 JSON 模型输出构建、修改和保存图表。状态图 可视化状态图和其他行为图。创建具有实时更新的图表以监控状态,或创建交互式图表以进行规划。桑基图 GoJS 允许对链接…

史上最全MATLAB误差分析工具箱,不看别后悔 【矢量化代码、效率嘎嘎快、支持计算50种指标】

在拟合、插值、模拟预测等计算中,往往需要通过不同指标参数来分析实际值与计算值之间差异依次衡量相关方法的可行性。常用的表征指标有残差平方和(SSE)、均方差(MSE)、均方根差(RMSE)、平均绝对误差(MAE)和决定系数R方(R-Squared)等等。 考虑到误差分析在实际应用中…

Kafka部署安装及简单使用

一、环境准备 1、jdk 8 2、zookeeper 3、kafka 说明:在kafka较新版本中已经集成了zookeeper,所以不用单独安装zookeeper,只需要在kafka文件目录中启动zookeeper即可 二、下载地址 Apache Kafka 三、部署 1、启动zookeeper -- 启动 .…

CSDN第11次竞赛题解与总结

CSDN第11次竞赛题解与总结前言建议题解T1圆小艺扩展完整代码T2K皇把妹完整代码T3筛选宝物完整代码T4圆桌完整代码总结前言 2022/11/27 CSDN第11次竞赛 由「壹合原码 & CSDN」联合主办 本次奖励还是不错的 (毕竟有赞助商),前三十名都有奖励,连以前第…

跑步10年回望

回顾跑步这10年有点遗憾,最终还是决定放弃参加2022年厦马,因为要求更早到厦门,也担心回福州后影响小朋友上课,权衡之下还是决定申请退赛。本想在这次活动上实现全马破4的目标,却只能晒个退赛截图。。。今年是厦马20年&…

【敲级实用】:某小伙写了一个的办公脚本后~变精神了~

文章目录📯小哔哔✏️注册有道智云✏️咋滴调用?✏️使用前的小操作✏️源代码专栏Python零基础入门篇🔥Python网络蜘蛛🔥Python数据分析Django基础入门宝典🔥小玩意儿🔥Web前端学习tkinter学习笔记Excel自…