HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。
采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。SSL是独立于HTTP的协议。
加密
对称加密
对称加密方式就是加密和解密使用同一套密钥,使用对称加密会出现一个问题就是密钥不能安全的从客户端转交给服务端或者从服务端转交给客户端,因为在转交过程中会被中间人拦截,中间人也可以拿到密钥,那么加密就没有了意义。
非对称加密
非对称加密就是使用公钥进行加密与私钥进行解密的一种加密方式。在客户端有一对公钥C和私钥C,服务端有一对公钥S和私钥S,客户端把公钥C发送给服务端,服务端把公钥S发送给客户端,这个过程中公钥可能会被中间人拦截,但是没有关系,他只有公钥,公钥是不能进行解密的。这样子数据好像可以安全的传输了。
使用非对称加密的方式有一个缺点就是这种加密方式的速度很慢,会影响数据传输效率。
混合加密机制
由于非对称加密来加密数据很影响数据传输的效率,引入了一种新的加密方式,对称加密和非对称加密混合加密的机制。客户端和服务端都有一对公钥和私钥,然后客户端或者服务端会有一个对称加密的密钥,这个密钥通过公钥加密转交给另一端,另一端通过私钥解密,这样对称加密的密钥就安全的转交成功了,这个过程里中间人拦截到被公钥加密的密钥,他是没办法解密的,所以他拿不到对称加密的密钥。接下来客户端和服务端就可以通过对称加密的方式安全地传输数据了。
这种机制还是存在一些问题,比如说客户端无法证明服务端发送过来的公钥就真的是服务端发送过来的,中间人可以拦截服务端发送过来的公钥然后替换成自己的公钥发送给客户端,这样当客户端向服务端发送被中间人的公钥加密的对称加密的密钥时,中间人就可以用自己的私钥进行解密了。
所以接下来就要引入证书的概念了。
证书
使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。
服务端向数字证书认证机构提出公开密钥的申请,数字证书认证机构判明申请者身份后,对已申请的公开密钥进行数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书
后绑定在一起。服务端会把这份份由数字证书认证机构颁发的公钥证书发送给客户端。
接到证书的客户端可对那张证书上的数字签名进行验证。