原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488454.html
HTTPS
HTTPS —— Hypertext Transfer Protocol over Secure Socket Layer,即基于SSL的HTTP协议,简单地说就是HTTP的安全版
依托SSL协议,HTTPS协议能够确保整个通信过程都是经过加密的,密钥随机产生,并且能够通过数字证书验证通信双方的身份,以此来保障信息安全。其中证书中包含了证书所代表一端的公钥,以及一些其所具有基本信息,如机构名称、证书所作用域名、证书的数字签名等,通过数字签名能校验证书的真实性。通信的内容使用对称加密方式进行加密,通信两端约定好通信密码后,通过公钥对密码进行加密传输,只有该公钥对应的私钥,也就是通信的另一端能够解密获得通信密码,这样既保证了通信的安全,也使加密性能和时间成本可控。
HTTPS协议在HTTP协议与TCP协议增加了一层安全层,所有请求和相应数据在经过网络传输之前,都会先进行加密,然后再进行传输。SSL及其继任者TLS是为网络通信提供安全与数据完整性保障的一种安全协议,利用加密技术,以维护互联网数据传输的安全,验证通信双方的身份,防止数据在网络传输的过程中被拦截和利用
HTTPS既支持单向认证,也支持双向认证,所谓的单向认证即只校验服务端证书的有效性,而双向认证则表示既校验服务端证书的有效性,同时也需要校验客户端证书的有效性。大部分情况下我们并不需要用到客户端证书,很多用户甚至没有客户端证书,但是在某些特定的环境下,如企业内部网络和涉及大额交易支付的场景下,也需要对用户的客户端进行校验,以保证通信的安全。
TLS
传输层安全协议(英语:Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。
SSL/TLS 协议均可以分为两层:
- 一层为 Record Protocol,即记录协议;记录协议建立在可靠的传输协议(如TCP)之上,提供数据封装、加密解密、数据压缩、数据校验等基本功能。
- 另一层为 Handshake Protocol,即握手协议。握手协议建立在记录协议之上,在实际的数据传输开始前,进行加密算法的协商,通信密钥的交换,通信双方身份的认证等工作。
SSL 握手协议大致工作流程:
完成握手后,客户端和服务端加密通信的流程:
Reference
https://zh.wikipedia.org/zh-cn/SSL
大型分布式网站架构设计与实践 陈康贤 著