众所周知HTTP是超文本传输协议,信息是明文传输,因此就有了HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),它也是一种超文本传送协议。HTTPS 在 HTTP 的基础上加入了 SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
SSL/TLS is what?
SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。
到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(Transport Layer Security),中文叫做“传输层安全协议”。
SSL/TLS可以视作同一个东西的不同阶段。
总之 HTTPS = HTTP + SSL/TLS
SSL/TLS 协议处于该分层协议栈结构中的位置,其分层结构位置参考如下:
SSL/TLS运行过程
SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
-
对称密码:加密和解密使用同一密匙。
-
公钥密码:加密和解密使用不同密钥的方式。
-
数字签名:由于消息认证码使用公钥进行加密的,会出现发送方否认的情况,所以为了防止这种情况出现,发送方使用私钥进行加密散列值。
-
证书:我们必须保证验证数字签名的公钥必须属于发送方,否则数字签名会失效。为了确认自己得到的公钥是否合法,我们需要使用证书。数字证书简称CA,它由权威机构给某网站颁发的一种认可凭证,这个凭证是被浏览器所认可的。
SSL/TLS协议的基本过程是这样的:
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通信。
前两步,又称为"握手阶段"(handshake)。