美文网首页网络
【HTTPS】SNI有关的HTTPS报错问题处理

【HTTPS】SNI有关的HTTPS报错问题处理

作者: Bogon | 来源:发表于2024-09-18 11:21 被阅读0次
    $ 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个点:

    1. TLS协议是在HTTPS层下面的是没办法获取到https层面的相关信息的。

    2. 我们看看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

    相关文章

      网友评论

        本文标题:【HTTPS】SNI有关的HTTPS报错问题处理

        本文链接:https://www.haomeiwen.com/subject/rljnljtx.html