InfoHunter 发表于 2016-12-15 22:03

forgaoqiang 发表于 2016-12-05 14:14 static/image/common/back.gif
回复 27# Godbach
好吧 ( ⊙ o ⊙ )


移动端不提示证书非法也是一个问题

forgaoqiang 发表于 2016-12-16 14:49

InfoHunter 发表于 2016-12-15 22:03
移动端不提示证书非法也是&# ...

基本上都会提示吧

至少很多应用会提醒 比如UC、淘宝、微信等 用户很少看明白怎么回事


Fl_wolf 发表于 2016-12-17 14:38

回复 30# Godbach

那些开发的事情啦

撒加 发表于 2016-12-21 13:16

1.    网站改造 HTTPS 过程中跳过的坑或者要注意的问题
1.1 近期我们公司也在逐步来上https,虽然我们在上之前做了一定的准备工作,但是上之后也遇上一些问题,我们指定的步骤是先上HTTPS,再上HTTP/2,测试我们的官网后,就像楼上说的那样,出现HTTP的资源无法访问,必须让页面加载的第三方资源也支持HTTPS。出现这个问题后,我找研发、测试、前端、APP各部门负责人开会讨论各自团队在上线HTTPS后的支持以及问题应对,例如将https:\\ http:\\ 都只保留\\来做自适应。
1.2 在部署HTTPS的时候,还是建议服务器的CPU使用E5 V3 V4的,主要原因是这两个系列的CPU支持AESNI,当然能够使用CPU AESNI引擎的openssl版本是1.0.2以上版本,1.0.1是不支持的,所以不管是Nginx还是Haproxy来做都需要重新编译(可以顺道带上chacha20的patch)。编译Nginx和Haproxy时建议使用cflags设置-mtune=native(我是这么用的)
1.3 编译openssl的话,默认最好带上no-ssl3 no-ssl3-method编译,从OPENSSL就关闭SSLV3的支持,免得一些SA大意在Nginx和haproxy中忘记关闭SSL V3
1.4 AES-NI默认内核是没加载的,所以需要手动加载AESNI模块,modprobe aesni-intel,当然可以在内核里把这个功能默认就编译到kernel中,而不是以模块形式启用,当然openssl engine查看的时候是看不到AESNI引擎的。
1.5 SNI问题,openssl 1.0.2默认就支持SNI了,openssl 1.0.1默认不开启,在Nginx和Haproxy配置的时候必须注意OPENSSL版本,如果不得不用1.0.1的openssl在编译的时候需要加上enable-tlsext,另外判断nginx是否支持了SNI,可以用nginx -V,如果有TLS SNI support enabled ,那SNI就是开启的
1.6 Nginx使用SNI问题不大,Haproxy还是有点差别的,比如普通的HTTPS和HTTP/2,用到的参数貌似还不一样,比如req.ssl_sni和ssl_fc_sni(还请Godbach简单聊聊啊)
2.    影响甚至导致无法全站 HTTPS 的痛点或者障碍
我认为还是影响HTTPS部署的因素有如下几个:
从APP来说,比如一些算法JDK 1.8支持的JDK 1.7就不支持,那高效的算法要使用,估计还得升级JDK,这个升级回来带来不确定性
从手机端系统来说,安卓不同的版本支持的算法也不一样,做兼容性测试,工作量也不小
从PC端来说,浏览器的兼容性、证书的类型啥的也都多少影响一些
代码来说,如果调用第三方的URL,第三方URL如果不是HTTPS还真是个头疼的事情
3.    证书申请以及私钥管理上的一些注意事项
用商业的证书我觉得问题不大
免费证书我觉得还是做好自动更新相关的东东吧

4.    部署 HTTPS 后,优化手段、遇到的问题以及解决方法
正常的业务部署HTTPS后,我认为还是算法的优化上,需要多做测试,我们目前正在进行中
我们业务里有Varnish,直接Varnish部署HTTPS感觉还是不靠谱,所以打算用其提供的hitch来做ssl proxy,将解密后的数据发送到Varnish

5.    负载均衡下或者 CDN 中部署 HTTPS 的一些经验
负载均衡下,怎么说呢,要是硬件负载均衡本身就带了SSL加速卡,没的说
软件负载均衡,除了上面说的SNI,还有AESNI外,性能还有更高要求那就得上专门的硬件加速卡了。
为了使用HTTPS,我们自己对Haproxy和OpenResty所用的系统又重新做了定制化,主要就是AESNI的支持,让其变成默认支持,而不是模块化支持

Godbach 发表于 2016-12-21 14:00

回复 54# 撒加

灰常给力。赞一个!

撒加 发表于 2016-12-21 22:36

回复 55# Godbach

目前的研究成果也就这些了,后续再补充HTTP/2的,哈哈

Godbach 发表于 2016-12-23 01:08

回复 56# 撒加
分析的内容很丰富啊。



Godbach 发表于 2016-12-23 01:08

回复 56# 撒加
1.6 Nginx使用SNI问题不大,Haproxy还是有点差别的,比如普通的HTTPS和HTTP/2,用到的参数貌似还不一样,比如req.ssl_sni和ssl_fc_sni(还请Godbach简单聊聊啊)

这个地方你的问题再具体一点? 你是说 HAProxy 对 SNI 的支持问题吗?


撒加 发表于 2016-12-23 10:29

回复 58# Godbach

在查阅相关资料的时候,发现个现象就是如果仅仅是Haproxy启用HTTPS,要使用SNI的话,用的指令是req.ssl_sni,如果是启用HTTPS且私用ALPN支持HTTP/2,看到使用的指令是ssl_fc_sni

Godbach 发表于 2016-12-24 21:25

回复 59# 撒加

ssl_fc_sni 和 req.ssl_sni (HAProxy v1.7 不推荐使用 req_ssl_sni)最根本的区别:
[*]ssl_fc_sni 是在 SSL offload 开启的情况下匹配 SNI 的。也就是,你配置 bind 的时候,还需要明确开启了 SSL,配置了证书和私钥。这个情况下,OpenSSL 库本身就帮你获取了这些信息的。
[*]req.ssl_sni 是在没有 SSL offload 时使用的。也就是你只配置了 TCP 模式,并且没有配置 SSL。其实就是一个 DPI(深度报文检测) 的过程,从 client 端的 TCP 请求数据中识别出来是 SSL 的传输,然后再此基础上提取 SNI。

这个应该是在 HAProxy 引入 SSL 之后,就是这么个区别的。当时我搞 SSL 的时候,特意看了一下这个区别。



页: 1 2 3 4 5 [6] 7
查看完整版本: 【专家坐堂】全站 HTTPS——如何规划、部署、优化?(获奖名单已公布)