资讯|财经|生活宝|商城|团购|房产|家居|装修|招聘|外卖|交友|亲子|汽车|同城|游戏|贷款|发稿|建站|软件|客服
上海论坛

【大量干货】史上最完整的Tengine HTTPS原理解析、实践与调试

更新于 2018-5-29 22:12:42 326人阅读 0人回复 显示全部楼层 倒序浏览

发表于 2018-5-29 22:12:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
摘要: 本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验。内容主要有四个方面:HTTPS趋势、HTTPS基础、HTTPS实践、HTTPS调试。 一、HTTPS趋势 这一章节主要介绍近几年和未来HTTPS的趋势,包括两大浏览器chrome和firefix对HTTPS的态度,以及淘宝天猫和阿里云CDN的HTTPS实践情况。
本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验。内容主要有四个方面:HTTPS趋势、HTTPS基础、HTTPS实践、HTTPS调试。
一、HTTPS趋势
这一章节主要介绍近几年和未来HTTPS的趋势,包括两大浏览器chrome和firefix对HTTPS的态度,以及淘宝天猫和阿里云CDN的HTTPS实践情况。
上图是 chrome 统计的HTTPS网页占比的趋势,2015年的时候,大多数国家的HTTPS网页加载次数只占了不到 50%,2016年美国这个占比到了将近60%,去年就已经超过 70%,目前已经超过 80%。最下面是日本,目前是60%左右,这里面没有统计到中国的数据,我估计中国的占比会更少,空间还有很大,但未来HTTPS趋势是明显的。
同样,Firefox 浏览器加载HTTPS网页的统计跟 chrome 差不多,全球 HTTPS网页加载占比在 70% 左右,上升趋势也很明显。
更值得关注的是,Google 在今年年初的时候在其安全博客上表明,在今年7月份左右发布的 chrome68 浏览器会将所有HTTP网站标记为不安全,现在是5月份底了,离这个时间也就一个多月的时间了。右边的截图可以看出本来是绿色的小锁变成了不安全,这种网页在输入密码时就很不安全了。
早期天猫淘宝只是在关键的登录和交易的环节上了HTTPS,但随着互联网的发展,劫持、篡改等等问题也越来越严重,试想在天猫淘宝上看的商品图片被恶意人替换了或者价格被篡改了会怎么样?这样用户、商家和平台都受到伤害,只有上了 HTTPS才能从根本上解决这些问题。所以,天猫和淘宝在2015年7月份的时候已经完成了全站HTTPS。
二、HTTPS基础
本章节主要介绍HTTPS为什么安全,包括对称加密、非对称加密、签名、证书&证书链、SSL是怎么握手的、以及私钥密钥在HTTPS中发挥什么样的作用、keyless又是解决什么样的问题等等。
HTTPS的定义
简单来讲,HTTPS就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在HTTP层和TCP层之间加了一个SSL层,SSL向上提供加密和解密的服务,对HTTP比较透明,这样也便于服务器和客户端的实现以及升级。
HTTPS为什么安全?
HTTPS安全是由一套安全机制来保证的,主要包含这4个特性:机密性、完整性、真实性和不可否认性。
  • 机密性是指传输的数据是采用Session Key(会话密钥)加密的,在网络上是看不到明文的。
  • 完整性是指为了避免网络中传输的数据被非法篡改,使用MAC算法来保证消息的完整性。
  • 真实性是指通信的对方是可信的,利用了PKI(Public Key Infrastructure 即『公钥基础设施』)来保证公钥的真实性。
  • 不可否认性是这个消息就是你给我发的,无法伪装和否认,是因为使用了签名的技术来保证的。
对称加密和非对称加密
HTTPS有对称加密和非对称加密两种算法,目的都是把明文加密成密文,区别是密钥的个数不一样,对称加密是一把密钥,这把密钥可以加密明文,也可以解密加密后的密文,常见的对称加密算法有AES、DES、RC4,目前最常用的是AES。
非对称加密是两把密钥,分别是公钥和私钥,公钥加密的密文只有相对应的私钥才能解密,私钥加密的内容也只有相对应的公钥才能解密,其中公钥是公开的,私钥是自己保存,不能公开,常见的非对称加密算法有RSA和ECC(椭圆曲线算法)。
SSL结合了这两种加密算法的优点,通过非对称加密来协商对称加密的密钥,握手成功之后便可使用对称加密来做加密通信,对于RSA来说,客户端是用RSA的公钥把预主密钥加密后传给服务器,服务器再用私钥来解密,双方再通过相同的算法来生成会话密钥,之后的应用层数据就可以通过会话密钥来加密通信。
签名
SSL中还有一个使用非对称加密的地方就是签名,签名的目的是让对方相信这个数据是我发送的,而不是其他人发送的。
密钥安全强度与性能对比
加密之后的数据破解难度就体现在密钥的长度上,密钥越长,破解难度也越大,但是运算的时间也越长,性能也就越差。相同安全强度下,对称密钥长度在最短,ECC次之,RSA密钥长度则最长。
目前比较常用的密钥长度是:对称密钥128位、ECC 256位、RSA 2048位。
RSA和ECC在SSL中更多的是用来签名,通过测试发现,ECC 的签名性能比RSA好很多,但是RSA的验签性能比ECC更好,所以RSA更适合于验证签名频繁而签名频度较低的场景,ECC更适合于签名频繁的场景,在SSL场景中,ECC算法性能更好。
公钥基础设施(PKI)
简单的说,PKI就是浏览器和CA,CA是整个安全机制的重要保障,我们平时用的证书就是由CA机构颁发,其实就是用CA的私钥给用户的证书签名,然后在证书的签名字段中填充这个签名值,浏览器在验证这个证书的时候就是使用CA的公钥进行验签。
最后,金九老师所在的团队最近正在招聘系统研发专家 & HTTPS 研发专家,需要熟悉C/C++/Lua/Golang或tengine/nginx/openresty/openssl的伙伴加入,联系邮箱:[email protected],欢迎志同道合的技术专家们联系我们哦~

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

便民工具
返回顶部快速回复返回列表联系客服手机访问
关于我们 | 联系我们 | 广告服务 | 网站导航 | 诚聘英才 | 友情链接 | 免责申明 |  帮助中心 | 手机访问 | 排行榜 | 小黑屋 | 设首页 | 加收藏
© 2011-2017 上海论坛 版权所有 沪ICP备11017971号-7    在线客服 举报 郑重声明:本站只提供网上自由交流讨论,所有个人言论并不代表本站立场
快速回复 返回顶部 返回列表