如何针对老旧浏览器设置 HTTPS 战术

如何针对老旧浏览器设置 HTTPS 战术

SSL 版本选拔

TLS(Transport Layer Security,传输层安全)的前身是 SSL(Secure Sockets
Layer,避孕套接字层),它最先的多少个版本(SSL 1.0、SSL 2.0、SSL
3.0)由网景公司支付,从 3.1 开头被 IETF 标准化并改名换姓,发展于今已经有 TLS
1.0、TLS 1.1、TLS 1.2 四个本子。TLS 1.3 退换会非常大,近些日子还在草案阶段。

SSL 1.0 从未公开过,而 SSL 2.0 和 SSL 3.0
都留存安全主题素材,不推荐使用。Nginx 从 1.9.1 初始暗许只扶助 TLS
的四个本子,以下是 Nginx
合土耳其共和国语档中对
ssl_protocols 配置的表达:

Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1]
[TLSv1.2];
Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server
Enables the specified protocols. The TLSv1.1 and TLSv1.2 parameters
work only when the OpenSSL library of version 1.0.1 or higher is used.

但不幸的是,IE 6 只扶助 SSLv2 和
SSLv3(来源),也正是说
HTTPS 网站要帮衬 IE 6,就务须启用 SSLv3。仅这一项就能导致 SSL Labs
给出的评分降为 C。

几天前,一位爱人问作者:都说推荐用 Qualys SSL
Labs 这一个工具测量检验 SSL
安全性,为何有个别安全实力很强的大商家评分也比十分低?笔者感觉这么些难点应有从两地点来看:

怎么针对老旧浏览器设置 HTTPS 战略

几天前,一个人朋友问笔者:都说推荐用 Qualys SSL Labs 这一个工具测量检验 SSL
安全性,为何有个别安全实力很强的大商家评分也极低?作者以为那么些标题应当从两下面来看:

  1. 境内客商终端情形复杂,非常多时候降落 SSL 安全配置是为着合作越多客商;
  2. 真正有局地大厂商的 SSL 配置特别不规范,越发是铺排了一部分显明不应当使用的
    CipherSuite。

自己事先写的《关于启用 HTTPS 的某些经验分享(一)》,首要介绍 HTTPS
怎么样与部分新出的平安规范同盟使用,面向的是今世浏览器。而明天那篇文章,更加多的是介绍启用
HTTPS 进度中在老旧浏览器下只怕蒙受的标题,以及如何选拔。

图片 1

 

自笔者冲突浏览器是还是不是协助 SNI

就算唯有老旧浏览器(例如 IE8 on Windows
XP)提醒那个张冠李戴,多半是因为你的服务器同有的时候候铺排了使用差异证书的四个 HTTPS
站点,那样,不支持 SNI(Server Name
Indication)的浏览器平日会博得错误的证件,进而不能访问。

要化解浏览器不协助 SNI 带来的主题材料,能够将选择差异证书的 HTTPS
站点布局在不相同服务器上;还能够运用 SAN(Subject Alternative
Name)机制将多个域名归入同一张证书;当然你也得以直接无视那么些老旧浏览器。特别地,使用不扶助SNI 的浏览器访谈商业 HTTPS CDN,基本都会因为证书错误而不或许利用。

至于 SNI 的越来越多表明,请看「关于启用 HTTPS
的有个别经验分享(二)」。

证书选用

HTTPS 网址须求经过 CA
取得合法表明,证书通过数字签字技术保障第三方不能伪造。证书的回顾原理如下:

  • 依附版本号、系列号、签字算法标记、发行者名称、有效期、证书主体名、证书主体公钥信息、发行商独一标志、主体独一标记、扩大生成
    TBSCertificate(To Be Signed Certificate, 待具名证书)音讯;
  • 签发数字具名:使用 HASH 函数对 TBSCertificate 总结获得音信摘要,用
    CA 的私钥对音信摘要举办加密,获得签字;
  • 校验数字签字:使用同样的 HASH 函数对 TBSCertificate
    总括获得新闻摘要,与使用 CA 公钥解密签名获得内容比较;

使用 SHA-1 做为 HASH 函数的注明被堪称 SHA-1 证书,由于当下曾经找到
SHA-1 的磕碰规范,将证书换来选用更安全的 SHA-2 做为 HASH 函数的 SHA-2
证书被提上日程。

事实上,微软一度宣称自 2017 年 1 月 1 日起,将完美终止对 SHA-1
证书的支撑。届时在新式版本的 Windows 系统中,SHA-1 证书将不被信赖。

而基于 Chrome
官方博客的文章,使用
SHA-1 证书且证书保藏期在 二〇一六 年 1 月 1 号至 二零一四 年 12 月 31
号之间的站点会被赋予「安全的,但存在纰漏」的晋升,也等于地址栏的小锁不再是肉桂色的,何况会有五个风骚小三角。而使用
SHA-1 证书且证书保藏期当先 2017 年 1 月 1
号的站点会被赋予「不安全」的壬辰革命警戒,小锁上向来呈现一个中黄的叉。

可是,并非全数的顶峰都援救 SHA-2
证书,服务端不支持幸而办,浏览器只好借助于客商进级了。上面是广泛浏览器援救SHA-2 证书的最低版本:

浏览器 支持 SHA-2 证书的最低版本
Chrome 26+
Firefox 1.5+
Internet Explorer 6+ (需要 XP SP3+)
Safari 3+ (需要 OS X 10.5+)
Android Webview 2.3+

能够见到,要是要照料未有打 XP SP3 补丁的 IE6 顾客,只好延续行使 SHA-1
证书。

在自家从前的篇章中,还关乎过 ECC
证书,这种新型的证件援救度更差,这里略过不提,风乐趣的同桌能够点这里查看。

是还是不是可以本着分歧浏览器启用分歧证书吗?理论上服务端能够依照客商端
Client Hello 中的 Cipher Suites 特征以及是还是不是援助 SNI
的性状来分配不一致证书,但是作者未曾实际验证过。

正文先写那样多,非常多政策都必要遵照本人网址的客户来支配,比方笔者的博客基本未有IE8- 顾客,理之当然能够禁止使用SSLv3。假诺您的制品还应该有大多使用老旧浏览器的客商,那就不能够不为这个顾客做同盟方案了。一种方案是:只把主域安全等第配低,将
XP 上 IE 顾客的 HTTPS 央浼直接重定向到 HTTP
版本,那样任何域名能够使用高安全等级的配备,运转起来相比较实惠。

1 赞 1 收藏
评论

图片 2

SSL 版本选择

TLS(传输层安全(Transport Layer Security))的前身是
SSL(套套接字层(Secure Sockets Layer)),它最早的多少个版本(SSL
1.0、SSL 2.0、SSL 3.0)由网景公司开支,从 3.1 发轫被 IETF
规范化并改名,发展到现在已经有 TLS 1.0、TLS 1.1、TLS 1.2 四个版本。TLS 1.3
改造会一点都相当的大,方今还在草案阶段。

SSL 1.0 从未公开过,而 SSL 2.0 和 SSL 3.0
都存在安全主题材料,不推荐使用。Nginx 从 1.9.1 开头私下认可只帮助 TLS
的多少个版本,以下是
Nginx 合法语档中对 ssl_protocols 配置的认证:

Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1]
[TLSv1.2];
Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server
Enables the specified protocols. The TLSv1.1 and TLSv1.2 parameters
work only when the OpenSSL library of version 1.0.1 or higher is used.

但不幸的是,IE 6 只支持 SSLv2 和
SSLv3(来源),也便是说
HTTPS 网址要帮忙 IE 6,就亟须启用 SSLv3。仅这一项就能够促成 SSL Labs
给出的评分降为 C。

 

证书接纳

HTTPS 网址须求通过 CA
取得合法注脚,证书通过数字具名本领确定保障第三方不只怕伪造。证书的大致原理如下:

  • 基于版本号、系列号、具名算法标志、发行者名称、保质期、证书主体名、证书主体公钥消息、发行商唯一标志、主体独一标记、扩充生成
    TBSCertificate( 待具名证书(To Be Signed Certificate))消息;
  • 签发数字具名:使用 HASH 函数对 TBSCertificate 计算获得音讯摘要,用
    CA 的私钥对音信摘要实行加密,获得具名;
  • 校验数字具名:使用同样的 HASH 函数对 TBSCertificate
    计算获得消息摘要,与应用 CA 公钥解密具名得到内容相相比;

使��� SHA-1 做为 HASH 函数的注明被叫作 SHA-1 证书,由于近来早就找到
SHA-1 的磕碰标准,将证书换来选用更安全的 SHA-2 做为 HASH 函数的 SHA-2
证书被提上日程。

实际上,微软一度宣称自 2017 年 1 月 1 日起,将完美终止对 SHA-1
证书的扶助。届时在新式版本的 Windows 系统中,SHA-1 证书将不被信赖。

而基于 Chrome 官方博客的小说,使用 SHA-1 证书且证书保质期在 二零一五 年 1 月
1 号至 贰零壹肆 年 12 月 31
号之间的站点会被授予「安全的,但存在漏洞」的提示,也正是地址栏的小锁不再是日光黄的,并且会有贰个黄绿小三角。而采用SHA-1 证书且证书保藏期超越 2017 年 1 月 1
号的站点会被授予「不安全」的花青警戒,小锁上直接突显二个革命的叉。

可是,而不是有着的终极都支持 SHA-2
证书,服务端不援救万幸办,浏览器只可以借助于顾客升高了。上边是大范围浏览器协理SHA-2 证书的最低版本:

浏览器 支持 SHA-2 证书的最低版本
Chrome 26+
Firefox 1.5+
Internet Explorer 6+ (需要 XP SP3+)
Safari 3+ (需要 OS X 10.5+)
Android Webview 2.3+

能够看见,假若要照望未有打 XP SP3 补丁的 IE6 顾客,只好三番五次行使 SHA-1
证书。

在自己从前的作品中,还波及过 ECC
证书,这种新颖的注解帮助度更差,这里略过不提,有野趣的同桌能够点这里查看。

是不是足以本着分化浏览器启用区别证书吗?理论上服务端能够依附客商端 Client Hello 中的
Cipher Suites 特征以及是还是不是帮衬 SNI
的性状来分配不一样证书,可是我并未有实际验证过。

本文先写那样多,相当多攻略都亟需基于本身网址的客商来支配,举个例子笔者的博客基本没有IE8- 顾客,理当如此能够禁用SSLv3。借使您的产品还只怕有众多行使老旧浏览器的客商,那就必得为那个客户做协作方案了。一种方案是:只把主域安全等级配低,将
XP 上 IE 客户的 HTTPS 乞求直接重定向到 HTTP
版本,那样任何域名能够选用高安全级其他配置,运营起来相比便利。

本文长久更新链接地址:

HTTPS 计谋几天前,一位相爱的人问作者:都说推荐用Qualys SSL Labs那个工具测验 SSL
安全性,为什么有些安全实力很强的大…

仅 Safari、iOS 种种浏览器不恐怕访问

假让你的 HTTPS 网址用 PC Chrome 和 Firefox 访谈一切符合规律,但 macOS Safari
和 iOS 种种浏览器不可能访谈,有十分的大大概是 Certificate Transparency
配置有误。当然,假如你此前未曾通过 TLS 增加启用 Certificate
Transparency,请跳过本小节。

现实症状是:通过 Wireshark 抓包深入分析,平时能观望名称叫 Illegal Parameter 的
Alert 新闻;通过 curl -v 排查,平日能来看 Unknown SSL protocol error
in connection 错误提醒。

这时候,请进入 Nginx ssl_ct_static_scts 配置钦命的目录,检查 SCT
文件大小是否健康,非常要尊崇是还是不是存在空文件。

急需注意的是,根据合法布告,从
2015 年 12 月 1 日开头,谷歌 的 Aviator CT log
服务将不再接受新的申明央浼。用 ct-submit 等工具手动获取
SCT 文件时,不要再使用 Aviator 服务,不然就能够获得空文件。

本文链接:,参加评价
»

–EOF–

宣布于 2015-12-12
23:50:26,并被增多「Nginx、HTTPS、HTTP2」标签,最后修改于 二零一四-12-25 15:26:07。查阅本文 马克down 版本
»

本站使用「署名 4.0
国际」创作共享左券,有关说明»

SNI 扩展

咱俩知晓,在 Nginx 中能够通过点名分歧的 server_name
来配置七个站点。HTTP/1.1 左券央求头中的 Host
字段能够标志出脚下呼吁属于哪个站点。可是对于 HTTPS 网址来讲,要想发送
HTTP 数据,必需等待 SSL
握手落成,而在握手阶段服务端就必得提供网站证书。对于在同四个 IP 陈设不同HTTPS 站点,况且还使用了差别证书的地方下,服务端怎么精通该发送哪个证书?

Server Name Indication,简称为 SNI,是 TLS
的贰个扩大,为缓慢解决这些标题应时而生。有了 SNI,服务端能够通过
Client Hello 中的 SNI 扩大得到顾客要拜会网址的 Server
Name,从而发送与之相称的证书,顺遂完结 SSL 握手。

Nginx 在很早此前就援助了 SNI,能够通过 nginx -V
来验证。以下是本人的印证结果:

./nginx -V nginx version: nginx/1.9.9 built by gcc 4.8.4 (Ubuntu
4.8.4-2ubuntu1~14.04) built with OpenSSL 1.0.2e-dev xx XXX xxxx TLS SNI
support enabled configure arguments: –with-openssl=../openssl
–with-http_ssl_module –with-http_v2_module

1
2
3
4
5
6
./nginx -V
nginx version: nginx/1.9.9
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)
built with OpenSSL 1.0.2e-dev xx XXX xxxx
TLS SNI support enabled
configure arguments: –with-openssl=../openssl –with-http_ssl_module –with-http_v2_module

只是,并非颇具浏览器都援救 SNI,以下是大规模浏览器扶助 SNI 的最低版本:

浏览器 最低版本
Chrome Vista+ 全支持;XP 需要 Chrome 6+;OSX 10.5.7+ 且 Chrome 5+
Firefox 2.0+
Internet Explorer 7+ (需要 Vista+)
Safari 3+ (需要 OS X 10.5.6+)
Mobile Safari iOS 4.0+
Android Webview 3.0+

一旦要防止在不扶助 SNI 的浏览器中出现证书错误,只好将应用分裂证书的
HTTPS 站点布局在不相同 IP 上,最简便易行的做法是分开布署到差异机器上。

 

SSL 版本选取

TLS(传输层安全(Transport Layer Security))的前身是
SSL(安全套接字层(Secure Sockets Layer)),它最早的多少个版本(SSL
1.0、SSL 2.0、SSL 3.0)由网景集团成本,从 3.1 起头被 IETF
标准化并改名,发展于今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个本子。TLS 1.3
改换会一点都不小,如今还在草案阶段。

SSL 1.0 从未公开过,而 SSL 2.0 和 SSL 3.0
都设有安全主题材料,不推荐使用。Nginx 从 1.9.1 起首私下认可只援助 TLS
的多个本子,以下是 Nginx 官方文书档案中对 ssl_protocols 配置的印证:

Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server
Enables the specified protocols. The TLSv1.1 and TLSv1.2 parameters work only when the OpenSSL library of version 1.0.1 or higher is used.

但不幸的是,IE 6 只帮忙 SSLv2 和 SSLv3(来源),也正是说 HTTPS
网址要支持 IE 6,就必得启用 SSLv3。仅这一项就能招致 SSL Labs
给出的评分降为 C。

 

专题「Web 服务器」的别样小说 »

  • 开班采纳VeryNginx (Dec 10, 2016)
  • 始发应用 ECC
    证书 (Aug 27, 2016)
  • 为啥我们应当尽早晋级到
    HTTPS? (May 16, 2016)
  • 本博客 Nginx
    配置之完整篇 (Mar 21, 2016)
  • 从无法拉开 OCSP Stapling
    聊起 (Mar 13, 2016)
  • Certificate Transparency
    那些事 (Feb 03, 2016)
  • Let’s Encrypt,无偿好用的 HTTPS
    证书 (Dec 25, 2015)
  • 从 Nginx 私下认可不压缩 HTTP/1.0
    说到 (Dec 15, 2015)
  • TLS
    握手优化详解 (Nov 08, 2015)
  • 使用 BoringSSL 优化 HTTPS
    加密算法接纳 (Oct 15, 2015)

有关启用 HTTPS 的局地经验分享(二)

2015/12/24 · 基本功技艺 ·
HTTP,
HTTPS

最早的小说出处:
imququ(@屈光宇)   

小说目录

  • SSL 版本选用
  • 加密套件采取
  • SNI 扩展
  • 证件选用

几天前,一个人情侣问小编:都说推荐用 Qualys SSL
Labs 这一个工具测量检验 SSL
安全性,为啥有个别安全实力很强的大厂商评分也好低?作者觉着那几个标题应当从两上边来看:1)国内客户终端情状复杂,比非常多时候降落
SSL 安全配置是为着合营越来越多顾客;2)确实有局地大厂商的 SSL
配置十分不伦不类,越发是计划了有的确定不应当使用的 CipherSuite。

自个儿事先写的《至于启用 HTTPS
的局部经验分享(一)》,首要介绍 HTTPS
怎么样与一些新出的金昌专门的职业协作使用,面向的是今世浏览器。而前几日那篇作品,越来越多的是介绍启用
HTTPS 进度中在老旧浏览器下只怕遇见的难题,以及怎么样挑选。

  1. 境内顾客终端意况复杂,比比较多时候降落 SSL 安全体署是为了合营越多客商;
  2. 确实有局地大商家的 SSL 配置非常不标准,非常是布局了一部分家谕户晓不应该使用的
    CipherSuite。

SNI 扩展

大家驾驭,在 Nginx
中能够透过点名不一致的 server_name 来配置三个站点。HTTP/1.1
合同央求头中的 Host 字段能够标记出当下恳请属于哪个站点。可是对于 HTTPS
网址来讲,要想发送 HTTP 数据,必需等待 SSL
握手完成,而在拉手阶段服务端就无法不提供网站证书。对于在同一个 IP 布置不同HTTPS 站点,並且还运用了差异证书的图景下,服务端怎么精晓该发送哪个证书?

Server Name Indication,简称为 SNI,是 TLS
的三个扩张,为斩草除根这一个主题素材出现。有了
SNI,服务端能够透过 Client Hello 中的 SNI 扩张得到顾客要访谈网址的
Server Name,进而发送与之同盟的证书,顺遂实现 SSL 握手。

Nginx 在很早此前就支持了
SNI,能够由此 nginx -V 来验证。以下是自家的验证结果:

  1. ./nginx -V
  2. nginx version: nginx/1.9.9
  3. built by gcc4.8.4(Ubuntu4.8.4-2ubuntu1~14.04)
  4. built withOpenSSL1.0.2e-dev xx XXX xxxx
  5. TLS SNI support enabled
  6. configure arguments:--with-openssl=../openssl --with-http_ssl_module --with-http_v2_module

而是,并不是有着浏览器都帮助 SNI,以下是常见浏览器协理 SNI 的最低版本:

浏览器 最低版本
Chrome Vista+ 全支持;XP 需要 Chrome 6+;OSX 10.5.7+ 且 Chrome 5+
Firefox 2.0+
Internet Explorer 7+ (需要 Vista+)
Safari 3+ (需要 OS X 10.5.6+)
Mobile Safari iOS 4.0+
Android Webview 3.0+

能够见到,以后还应该有一定客商量的 Windows XP IE6~8、Android 2.x Webview
都不帮助 SNI。若是要防止在这个浏览器中出现证书错误,只好将选拔区别证书的
HTTPS 站点布局在差别 IP 上,最简便的做法是分离铺排到差异机器上。

 

反省证书链是或不是完全

首先保险网址选择的是合法 CA 签发的卓有功效注脚,其次检查 Web Server
配置中申明的完整性(必定要含有站点证书及全体中等证书)。若是缺失了中等证书,部分浏览器能够活动获取但严重影响
TLS 握手品质;部分浏览器直接报证书错误。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图