- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HTTPS原理解析
⼀ 前⾔
在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览⽹页时候使⽤的⼀种协议。HTTP协议传输的数据都是未加密的,也就
是明⽂的,因此使⽤HTTP协议传输隐私信息⾮常不安全。为了保证这些隐私数据能加密传输,于是⽹景公司设计了SSL (Secure Sockets
Layer)协议⽤于对HTTP协议传输的数据进⾏加密,从⽽就诞⽣了HTTPS。SSL ⽬前的版本是3.0,被IETF (Internet Engineering Task
Force)定义在RFC 6101中,之后IETF对SSL 3.0进⾏了升级,于是出现了TLS (Transport Layer Security) 1.0 ,定义在RFC 2246。实际
上我们现在的HTTPS都是⽤的TLS协议,但是由于SSL出现的时间⽐较早,并且依旧被现在浏览器所⽀持,因此SSL依然是HTTPS的代名
词,但⽆论是TLS还是SSL都是上个世纪的事情,SSL最后⼀个版本是3.0,今后TLS将会继承SSL优良⾎统继续为我们进⾏加密服务。⽬前
TLS的版本是1.2,定义在RFC 5246中,暂时还没有被⼴泛的使⽤ ()
概念可参考百科
⼆ HTTPS 验证原理
Https在真正请求数据前,先会与服务有⼏次握⼿验证,以证明相互的⾝份,以下图为例
2.1 验证流程
注:⽂中所写的序号与图不对应但流程是对应的
1 客户端发起⼀个https的请求,把⾃⾝⽀持的⼀系列Cipher Suite (密钥算法套件,简称Cipher)发送给服务端
2 服务端,接收到客户端所有的Cipher后与⾃⾝⽀持的对⽐,如果不⽀持则连接断开,反之则会从中选出⼀种加密算法和HASH算法
以证书的形式返回给客户端证书中还包含了公钥颁证机构⽹址失效⽇期等等。
3 客户端收到服务端响应后会做以下⼏件事
3.1 验证证书的合法性
颁发证书的机构是否合法与是否过期,证书中包含的⽹站地址是否与正在访问的地址⼀致等
证书验证通过后,在浏览器的地址栏会加上⼀把⼩锁(每家浏览器验证通过后的提⽰不⼀样不做讨论)
3.2 ⽣成随机密码
如果证书验证通过,或者⽤户接受了不授信的证书,此时浏览器会⽣成⼀串随机数,然后⽤证书中的公钥加密。
3.3 HASH握⼿信息
⽤最开始约定好的HASH⽅式,把握⼿消息取HASH值, 然后⽤随机数加密 “握⼿消息+握⼿消息HASH值(签名)” 并⼀起发送给服务端
在这⾥之所以要取握⼿消息的HASH值,主要是把握⼿消息做⼀个签名,⽤于验证握⼿消息在传输过程中没有被篡改过。
4 服务端拿到客户端传来的密⽂,⽤⾃⼰的私钥来解密握⼿消息取出随机数密码,再⽤随机数密码解密握⼿消息与HASH值,并与传过来
的HASH值做对⽐确认是否⼀致。
然后⽤随机密码加密⼀段握⼿消息(握⼿消息+握⼿消息的HASH值 )给客户端
5 客户端⽤随机数解密并计算握⼿消息的HASH,如果与服务端发来的HASH⼀致,此时握⼿过程结束,之后所有的通信数据将由之前浏览
器⽣成的随机密码并利⽤对称加密算法进⾏加密
因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全
⾮对称加密算法:RSA,DSA/DSS 在客户端与服务端相互验证的过程中⽤的是对称加密
对称加密算法:AES ,RC4,3DES 客户端与服务端相互验证通过后,以随机数作为密钥时,就是对称加密
HASH算法:MD5,SHA1,SHA256 在确认握⼿消息没有被篡改时
2.2 客户端如何验证证书的合法性?
1. 验证证书是否在有效期内。
在服务端⾯返回的证书中会包含证书的有效期,可以通过失效⽇期来验证证书是否过期
2. 验证证书是否被吊销了。
被吊销后的证书是⽆效的。验证吊销有CRL(证书吊销列表)和OCSP(在线证书检查)两种⽅法。
证书被吊销后会被记录在CRL中,CA会定期发布CRL。应⽤程序可以依靠CRL来检查证书是否被吊销了。
CRL有两个缺点,⼀是有可能会很⼤,下载很⿇烦。针对这种情况有增量CRL这种⽅案。⼆是有滞后性,就算证书被吊销了,应⽤也只能等
到发布最新的CRL后才能知道。
增量CRL也能解决⼀部分问题,但没有彻底解决。OCSP是在线证书状态检查协议。应⽤按照标准发送⼀个请求,对某张证书进⾏
文档评论(0)