• Nginx支持SNI证书,已经ssl_server_name的使用


    整理了一些网上的资料,这里记录一下,供大家参考

    什么是SNI?

        传统的应用场景中,一台服务器对应一个IP地址,一个域名,使用一张包含了域名信息的证书。随着云计算技术的普及,在云中的虚拟机有了一个IP,对应多个域名,使用多张证书的应用场景,SNI技术应运而生。SNI(Server Name Indication),即实现了一个服务器使用多个域名证书的TLS扩展,支持用户配置多个域名证书。

    SNI请求特点

        HTTP请求的Host字段在请求的Header中。发起HTTPS请求时,在TLS握手阶段,还无法进行HTTP数据的解析,此时TLS协议的Client Hello字段新增了一个Server Name字段,请求的客户端可以通过这个字段填充请求的Host信息,而服务端在TLS握手阶段就可以选择请求处理的证书,实现SNI的功能。

     各种工具对SNI的支持各种工具对SNI的支持icon-default.png?t=N7T8https://en.wikipedia.org/wiki/Server_Name_Indication

    (1)主流的浏览器  可以理解为客户端工具

    (2)curl和wget之类的命令行工具  可以理解为客户端工具

    curl和nginx关于SNI一些细节

     已知的问题:curl和jdk'版本过低(客户端不支持SNI)','导致'ssl握手的'SNI'问题

     (3)库和编程语言 可以理解为客户端工具

     (4)web服务器 可以理解为服务端

    • 默认SNI是'开启的'

    Nginx支持的配置

        Nginx支持SNI,允许在同一个TLS服务端口下,配置不同的域名,用户通过请求不同的证书域名,可返回相应的upstream响应结果。

        本示例配置了一个证书域名为“lwl.test.com”的单向认证代理服务,一个证书域名为“lwl.default.com”的双向认证代理服务,使用相同的443端口,具体配置如下:

    # Settings for a TLS enabled server.
        upstream lwl.test.com {
            server 192.168.58.196;
        }

        upstream default {
            server 192.168.58.195;
        }

      server {
            listen       443 ssl;
            listen       [::]:443 ssl;
            server_name  lwl.test.com;
            root         /usr/share/nginx/html;

            ssl_certificate /etc/nginx/ssl_sni/server/lwl.test.com/server.crt;
            ssl_certificate_key /etc/nginx/ssl_sni/server/lwl.test.com/server.key;

            ssl_session_cache shared:SSL:1m;
            ssl_session_timeo

  • 相关阅读:
    [架构之路-225]:计算机硬件与体系结构 - 分类方法大汇总: RISC, CISC
    C. Mr. Perfectly Fine
    ovirt4.5-engine 安装
    关于网球的要点
    Nginx 监控模块
    Linux系统中如何查看磁盘情况
    数字化时代——如何快速实现数字化转型并进入低代码赛道
    LabVIEW通讯-GPIB
    opencv编译错误记录
    论文中的小细节——为什么论文中总是写WX而不是XW?
  • 原文地址:https://blog.csdn.net/yangyangye/article/details/133645667