咱们知道使用HTTP协议进行服务端与客户端通讯时,信息是经过明文传输的。这期间信息就有可能被拦截或者篡改,为了解决这种场景,HTTPS就出现了。算法
相对于HTTP来讲,HTTPS有以下做用。浏览器
接下来就学一下HTTPS的工做原理。安全
HTTPS是目前使用最多的HTTP安全形式。在使用HTTPS时,全部的HTTP请求和响应数据在发送到网络以前,都会进行加密。服务器
上图展现了HTTP与HTTPS在网络协议中的表现,能够看到在应用层中HTTPS=HTTP + SSL/TLS。网络
SSL和TSL是一种安全协议。其中SSL是早起采用的安全协议,后来TSL是在SSL的基础上进一步标准化了SSL协议。在上面的图中能够看到,SSL和TSL位于传输层之上,在数据到达传输层以前都会通过SSL/TSL协议层处理,由SSL/TSL保证数据的机密性和完整性。函数
SSL/TSL安全协议保证数据安全的技术基础就是密码学。接下来,咱们先了解一些跟HTTPS有关的密码学知识。网站
密码是一种编码方案的算法,也就是使用一种编码方式编码数据,而后使用相应的解码方式解码数据的算法。google
密钥是编码的参数。编码
经过密码+密钥就能够实现加密数据。加密
对称加密就是编码和解码使用同一个密钥的加密技术。
在对称加密中,发送端和接收端使用相同的密钥进行通讯。发送端使用共享的密钥发送报文,而后将密文发送到接收端。接收端使用相同密钥解密密文,恢复原始数据。
非对称加密也成为公开密钥加密技术,就是使用不一样密钥进行通讯的加密技术。
非对称加密技术使用了不一样的密钥进行通讯,在发送端使用公钥对报文进行加密(公钥就是所用人均可以获取到的密钥),而后在接收端使用私钥对加密的密文进行解密。常见的非对称加密技术是RSA技术。
数字签名是附加在报文上的特殊加密校验码。数字签名能够防止报文被篡改,若是有恶意攻击在传输过程在篡改了报文,那么校验的时候校验和就再也不匹配,所以能够确认报文被篡改了。
数字签名的加解密过程:
数字证书是由权威机构给某网站颁发的一种承认凭证。它主要包含一些认证信息,好比:对象的名称(服务器、组织、我的等)、过时时间、证书颁发者、来自证书发布者的数字签名。
上面的图片就是www.google.com的证书。
咱们能够看到在上面讲到数字签名的时候,彷佛就能够保证报文的安全了。为何还须要数字证书呢?这个设想一下这个场景:好比某人A把发送到浏览器的公有密钥进行了替换,同时A在给浏览器发送报文时使用本身的私有密钥对报文进行数字签名,那么浏览器就不能确认报文是否来自于真实服务器。这个时候就可使用数字证书进行验证,由于数字证书中保存了真实服务器的信息。
在TCP链接创建完成之后,在HTTPS协议中,客户端和服务端会初始化SSL层,也就是安全层。
在发送报文以前,客户端和服务端会进行一次SSL握手,在这个过程当中主要完成如下工做:
在SSL会进行不少工做,处理交换一些必要的信息以外,还会对身份进行认证。
这里的认证是经过数字证书进行的,在客户端获取证书后,会采用相应的算法对服务端的身份信息进行验证:
身份认证完成后,客户端与服务端进行密码协商,肯定本次链接采用哪一种加密算法进行通讯。
SSL握手完成后,就完成创建了HTTPS通道,客户端与服务端就会根据协商的加密算法进行通讯。
整个HTTPS的工做流程能够总结以下:
相较于HTTP协议,HTTPS确保了报文的机密性以及完整性。HTTPS确保这些的依赖就是SSL/TSL协议,SSL/TSL安全协议搭配数字证书保证了报文在传输过程当中的绝对安全。