$ sudo /usr/local/openresty/nginx/sbin/nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
nginx version: openresty/1.19.9.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.1.1l 24 Aug 2021
TLS SNI support enabled
configure arguments:
--prefix=/usr/local/openresty/nginx
--with-debug
......
--with-stream
--with-stream_ssl_module
--with-stream_ssl_preread_module
image.png
需要注意的是,有的同学问到我们在https 请求的URL中已经有了需要请求的服务器名在请求的Header中也有设置,为什么这里还需要设置, 这里需要理解2个点:
-
TLS协议是在HTTPS层下面的是没办法获取到https层面的相关信息的。
-
我们看看client和server建立Https连接的过程: 先建立tcp连接 -->经过TLS握手-->实现https通信-->进而发送HTTP请求 , 从请求过程来看在TLS握手阶段, server端'也没有办法获取七层HTTP报文的信息
对于Nginx,如果客户端在ssl握手阶段未携带server_name Nginx就会去找默认server,然后使用默认server的ssl证书来响应, 因为我们使用的泛域名证书,默认server的ssl证书也是可以匹配上的。
服务端通过SNI(Server Name Indication)来区别虚拟主。
在某些场景中,需要获取ClientHello中的SNI字段来作为一个必要条件, 比如用NGINX stream对HTTPS流量做4层代理时,客户端ClientHello中没有携带SNI,则会造成一个通过代理握手失败的局面。
在利用NGINX stream做正向代理时,NGXIN服务器需要获取客户端想要访问的目的域名,利ngx_stream_ssl_preread_module模块在不解密的情况下拿到ClientHello报文中SNI才能实现代理的正常功能。
参考
了解Https SNI 以及 Win XP 对https支持情况测试
https://mp.weixin.qq.com/s/ff4-FvgX1lD0edWRKde_Fw
直接用IP访问知乎,我发现了一个秘密
https://mp.weixin.qq.com/s/qxjiix7z9stauONxWUGgrQ
都用HTTPS了,还能被查出浏览记录?
https://mp.weixin.qq.com/s/TJDCXRvibNIPeKck6e1q9w
CentOS 7安装SNI Proxy对HTTPS站点进行反向代理
https://mp.weixin.qq.com/s/Gk5_oklEwrY-BG6j-pBYug
处理 一个SNI 引发“血案”的全过程
https://mp.weixin.qq.com/s/GY9ZYKEoECfM6YpfvV0duw
Apisix 迁移之TLS的问题
https://mp.weixin.qq.com/s/ln9lYYAKAaBsH-uI-PuDSg
HTTPS请求出现received fatal alert: internal_error的问题分析排查
https://blog.csdn.net/xiao__jia__jia/article/details/123752327
HTTPS握手失败 javax.net.ssl.SSLException: Received fatal alert: internal_error
https://www.codetd.com/article/9814188
APISIX网关在雪球生产实践
https://blog.csdn.net/singgel/article/details/122701839
SNIproxy
https://www.kancloud.cn/panxin20/notes/2648800
SNI Proxy:历史中的名字基于代理方案
https://blog.csdn.net/gitblog_00924/article/details/141632410
说说SNI Proxy
http://blog.ttionya.com/article-1851.html
CentOS下安装 SNIProxy 实现 hosts 代理
https://coderschool.cn/2284.html
sniproxy 服务器是什么?
https://worktile.com/kb/ask/1363661.html
网友评论