为什么80%的码农都做不了架构师?>>>   

一. 介绍 早期的SSLv2根据经典的公钥基础设施PKI(Public Key Infrastructure)设计,它默认认为:一台服务器(或者说一个IP)只会提供一个服务,所以在SSL握手时,服务器端可以确信客户端申请的是哪张证书。 但是让人万万没有想到的是,虚拟主机大力发展起来了,这就造成了一个IP会对应多个域名的情况。解决办法有一些,例如申请泛域名证书,对所有*.yourdomain.com的域名都可以认证,但如果你还有一个yourdomain.net的域名,那就不行了。 在HTTP协议中,请求的域名作为主机头(Host)放在HTTP Header中,所以服务器端知道应该把请求引向哪个域名,但是早期的SSL做不到这一点,因为在SSL握手的过程中,根本不会有Host的信息,所以服务器端通常返回的是配置中的第一个可用证书。因而一些较老的环境,可能会产生多域名分别配好了证书,但返回的始终是同一个。 既然问题的原因是在SSL握手时缺少主机头信息,那么补上就是了。 SNI(Server Name Indication)定义在RFC 4366,是一项用于改善SSL/TLS的技术,在SSLv3/TLSv1中被启用。它允许客户端在发起SSL握手请求时(具体说来,是客户端发出SSL请求中的ClientHello阶段),就提交请求的Host信息,使得服务器能够切换到正确的域并返回相应的证书。 [warning] 要使用SNI,需要客户端和服务器端同时满足条件,幸好对于现代浏览器来说,大部分都支持SSLv3/TLSv1,所以都可以享受SNI带来的便利。[/warning] 二. nginx / apache 服务器端实现 nginx和apache服务端支持SNI参见: 《nginx 同一个IP上配置多个HTTPS主机》 《apache mod_gnutls实现多HTTPS虚拟主机》 三. 支持SNI的浏览器、服务器、库 Internet Explorer 7 or later, on Windows Vista or higher. Does not work on Windows XP, even Internet Explorer 8. Mozilla Firefox 2.0 or later Opera 8.0 or later (the TLS 1.1 protocol must be enabled) Opera Mobile at least version 10.1 beta on Android[citation needed] Google Chrome (Vista or higher. XP on Chrome 6 or newer. OS X 10.5.7 or higher on Chrome 5.0.342.1 or newer) Safari 2.1 or later (Mac OS X 10.5.6 or higher and Windows Vista or higher) Konqueror/KDE 4.7 or later MobileSafari in Apple iOS 4.0 or later Android default browser on Honeycomb or newer Windows Phone 7[citation needed] MicroB on Maemo 四. 支持SNI的服务器 Apache 2.2.12 or later using mod_ssl(or alternatively with experimental mod_gnutls) Cherokee if compiled with TLS support Versions of lighttpd 1.4.x and 1.5.x with patch, or 1.4.24+ without patch Nginx with an accompanying OpenSSL built with SNI support LiteSpeed 4.1 or later Pound 2.6 or later Apache Tomcat on Java 7 or later Microsoft Internet Information Server IIS 8 五. 支持SNI的库 Mozilla NSS 3.11.1 client-side only OpenSSL 0.9.8f (released 11 Oct 2007) – not compiled in by default, can be compiled in with config option ‘–enable-tlsext’ 0.9.8j (released 07 Jan 2009) through 1.0.0 (released 29 March 2010) – compiled in by default GNU TLS libcurl / cURL since 7.18.1 (released 30 Mar 2008) when compiled against an SSL/TLS toolkit with SNI support Python 3.2 (ssl, urllib and httplib modules) Qt 4.8 Oracle Java 7 JSSE 参考文档:http://blog.hesey.net/2012/02/sni-for-multi-domain-ssl-tls.html http://serverfault.com/questions/109800/multiple-ssl-domains-on-the-same-ip-address-and-same-port

转载于:https://my.oschina.net/766/blog/211504

SNI: 实现多域名虚拟主机的SSL/TLS认证相关推荐

  1. 如何在虚拟主机安装ssl证书,详细教程来了

    谈到ssl证书,相信大家都不会感到陌生,这种在网站运营中极为重要的安全凭证对于网站经营者来说是极为重要的证明,对于访问网页的用户来说也是信息安全和传输稳定的标志.现阶段想要建立一个优质的网站,普遍需要 ...

  2. 一台服务器配置多台ssl虚拟主机,同ip多域名虚拟主机SSL如何配置-SNI

    1.Server Name Indication(服务器名称指示) 以前一直听说基于域名的虚拟主机上只能使用同一张证书以配置SSL,其他域名会提示证书错误,或者去购买昂贵的多域名证书,直到无意中看到l ...

  3. 十八.搭建Nginx服务器、配置网页认证、基于域名的虚拟主机、ssl虚拟主机

    配置要求: client:192.168.4.10 proxy:192.168.4.5(eth0) 192.168.2.5(eth1) web1:192.168.2.100 web2:192.168. ...

  4. 源码包安装Nginx(1.19.1),并配置Nginx,比如:用户认证,防盗链,虚拟主机,SSL等功能

    基础配置 #关闭防火墙 [root@node2 ~]# systemctl stop firewalld [root@node2 ~]# systemctl disable firewalld #清空 ...

  5. Nginx安装、默认虚拟主机、Nginx用户认证、Nginx域名重定向

    12.6 Nginx安装 安装包下载到/usr/local/src目录 [root@taoyuan ~]# cd /usr/local/src [root@taoyuan src]# wget htt ...

  6. nginx虚拟主机(基于域名虚拟主机、基于IP地址虚拟主机、基于端口虚拟主机设置)

    文章目录 Nginx支持的虚拟主机有三种 配置环境 配置DNS域名 安装环境 安装nginx 制作管理脚本 基于域名 基于端口 基于IP 基于用IP地址访问域名 Nginx支持的虚拟主机有三种 ●基于 ...

  7. Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····

    2019独角兽企业重金招聘Python工程师标准>>> Ngninx默认虚拟主机 1.vim /usr/local/nginx/conf/nginx.conf //增加 2.incl ...

  8. 4----apache主配置文件模板和基于域名虚拟主机配置文件模板

    1,主配置文件模板 # cat httpd.conf ServerRoot "/usr/local/apache" Listen 80 LoadModule authn_file_ ...

  9. 景安 虚拟主机 自有SSL证书

    最近研究ios 跳转的 ios universal link 需要https协议的 景安原本可以直接搞免费的SSL证书的,这个下线很长时间了,但是有一个自有证书部署的功能.我平时也就是测试用免费的就可 ...

最新文章

  1. 10种避免大型部署的方法
  2. 中科大团队打造“象鼻”机器人,开门、擦玻璃、会给女朋友拧瓶盖的那种
  3. linux内核网络协议栈--linux网络设备理解(十四)
  4. Python:列表、集合等交集、并集、差集、非集简介及其代码实现之详细攻略
  5. HTML5 学习手笔二:canvas API 绘制树形图案A
  6. 使用RNN预测文档归属作者
  7. php mysql复杂查询_PHP MySQL如何做更复杂的查询
  8. 令人深思的联系-this关键字(隐藏属性static)
  9. crout分解计算例题_专题:化学方程式计算
  10. C中处理Python的Numpy数组的代码范例
  11. npm和包、npm下载安装使用包、全局安装包和本地安装包、全局安装nodemon包、开发依赖和生产依赖
  12. 偏微分方程的数值解(六): 偏微分方程的 pdetool 解法
  13. 开源项目Smail动工
  14. 经典算法详解(2):费氏数列
  15. 计算机专业的电脑桌面,win7电脑桌面计算机图标不见了怎么办
  16. 车载TBOX,4G北斗/GPS双模定位
  17. 中国科学报:吴文俊的数字之舞
  18. JAVA远程session访问,访问独立SESSION服务器
  19. 清北学堂noip2019集训D6——动态规划
  20. 星际穿越-网易python(简单数学公式)

热门文章

  1. C语言技巧:把单一元素的数组放在末尾,struct可以拥有可变大小的数组
  2. c语言字符常量和字符串常量_C语言中的字符常量
  3. array.tolist_在Python中使用array.tolist()将数组转换为列表
  4. 平院Python习题
  5. 横向全屏滑动插件_【案例】JQuery横向手风琴图片轮播切换代码
  6. feather 设置坐标刻度_Matlab中将坐标轴放在原点位置
  7. linux smb 启动失败,[已解决]windows能看到smb,但是打不开
  8. redis源码剖析(十二)—— RDB持久化
  9. C++ 常用排序算法
  10. 数据可视化【十四】交互式过滤地区分布图