传统的网络通信使用的是HTTP传输协议,全程公开所以容易被人监听和劫持,同时HTTP协议无法验证通信双方身份,因此给了钓鱼网站可乘之机。装上SSL证书将升级为HTTPS加密协议,今天分享下SSL的工作原理及详细的握手过程。
一、什么是 SSL
SSL代表安全套接字层,是指用于加密、保护和验证互联网上之通信的协议。尽管SSL在一段时间前已被称为 TLS(传输层安全性)的更新协议代替,但“SSL”仍是该技术的常用术语。
SSL/TLS 的主要用例是保护客户端和服务器之间的通信安全,但它也可以保护不安全网络上的电子邮件、VoIP 和其他通信。
二、什么是SSL证书
SSL证书是一种用于在Web服务器和客户端浏览器之间建立加密链接的数字证书。通过配置和应用SSL证书启用HTTPS协议,可实现对网站真实性的确认和信息传输过程的加密处理,有效保障数据传输的安全性。许多证书颁发机构对SSL证书收费,目前国内各大云服务器商都有免费SSL证书可申请。
三、SSL / TLS 以及 SSL / TLS 握手的概念
SSL 和 TLS 协议可以为通信双方提供识别和认证通道,从而保证通信的机密性和数据完整性。TLS 协议是从Netscape SSL 3.0协议演变而来的,不过这两种协议并不兼容,SSL 已经逐渐被 TLS 取代,所以下文就以 TLS 指代安全层。TLS 握手是启动 HTTPS 通信的过程,类似于 TCP 建立连接时的三次握手。在 TLS 握手的过程中,通信双方交换消息以相互验证,相互确认,并确立它们所要使用的加密算法以及会话密钥(用于对称加密的密钥)。可以说,TLS 握手是 HTTPS 通信的基础部分。
四、SSL的工作原理
当客户端向一个https网站发起请求时,服务器会将SSL证书发送给客户端进行校验,SSL证书中包含一个公钥。校验成功后,客户端会生成一个随机串,并使用受访网站的SSL证书公钥进行加密,然后再发送给网站服务器。
网站服务器收到加密的随机串后,会利用自己的私钥进行解密,得到由客户端生成的随机串。服务器使用这一随机串,开始与客户端进行对称加密通信,客户端使用随机串对服务器发来的信息进行加密。
从这个过程中可以看出,SSL证书同时使用了非对称加密和对称加密,使用非对称加密运送一把“钥匙”给服务器,保证“钥匙”的安全性,服务器得到“钥匙”后,使用这把“钥匙”对信息进行加密,整个传输过程都处于加密状态,有效保障了信息的完整性、准确性和安全性。
五、SSL / TLS 握手详细过程
接下来看下 TLS 握手的详细过程,此图与 HTTPS 原理图的流程大致相同,不同的是此图把重点放在了 TLS 握手的相关概念上。
1、"client hello"消息:客户端通过发送"client hello"消息向服务器发起握手请求,该消息包含了客户端所支持的 TLS 版本和密码组合以供服务器进行选择,还有一个"client random"随机字符串。
2、"server hello"消息:服务器发送"server hello"消息对客户端进行回应,该消息包含了数字证书,服务器选择的密码组合和"server random"随机字符串。
3、验证:客户端对服务器发来的证书进行验证,确保对方的合法身份,验证过程可以细化为以下几个步骤:
① 检查数字签名
② 验证证书链 (这个概念下面会进行说明)
③ 检查证书的有效期
④ 检查证书的撤回状态 (撤回代表证书已失效)
4、"premaster secret"字符串:客户端向服务器发送另一个随机字符串"premaster secret (预主密钥)",这个字符串是经过服务器的公钥加密过的,只有对应的私钥才能解密。
5、使用私钥:服务器使用私钥解密"premaster secret"。
6、生成共享密钥:客户端和服务器均使用 client random,server random 和 premaster secret,并通过相同的算法生成相同的共享密钥 KEY。
7、客户端就绪:客户端发送经过共享密钥 KEY 加密过的"finished"信号。
8、服务器就绪:服务器发送经过共享密钥 KEY 加密过的"finished"信号。
9、达成安全通信:握手完成,双方使用对称加密进行安全通信。
以上是SSL的工作原理及详细的握手过程介绍。通过安装和部署SSL证书启用更为安全的HTTPS传输协议,对传输数据进行加密处理,并有效验证服务器身份,最大程度避免了信息泄露和钓鱼网站。特别是一些重点行业和领域,SSL证书已成为保障网站数据安全的一种“标配”。