HTTPS概念
超文本传输安全协议(Hypertext Transfer Protocol Secure 缩写为HTTPS)是一种网络安全传输协议。在计算机网络上,HTTPS借由超文本传输协议进行通讯。算法
HTTPS还被称为HTTP over TLS, HTTP over SSL。顾名思义,是利用SSL/TLS来加密数据包,不和HTTP那样裸奔在TCP上面。浏览器
什么是SSL/TLS
- SSL是指安全套接字层,简而言之,它是一项标准技术,可确保互联网链接安全,保护两个系统之间发送的任何敏感数据,防止坏蛋读取和修改任何传输信息,包括我的资料。两个系统多是指服务器和客户端(例如:浏览器和购物网站),或两个服务器(例如:含有我的信息的应用程序)。
- 这样可确保用户和站点之间,或两个系统之间传输的数据没法被读取。它使用加密算法打乱传输中的数据,防止数据经过链接传输时被黑客读取。这里所说的数据是指任何敏感或者我的信息,例如信用卡号等。
- TLS(传输层安全)是更为安全的升级版SSL。因为SSL这一术语更为经常使用,所以咱们仍然将咱们的安全证书称做SSL。
- 若是某个网站受SSL证书保护,其相应的URL中会显示HTTPS(茶农文本传输安全协议)。单机浏览器地址栏的挂锁图标,便可查看证书详细信息,包括颁发机构和网站全部者的公司名称。
加密方式
- 对称加密:加密和解密数据使用同一个密钥。这种加密方式的优势是速度很快,常见的对称加密算法有AES。
- 非对称加密:加密和解密仍是用不一样的密钥,叫公钥和私钥。数据用公钥加密后必须使用私钥解密,数据用私钥加密后必须使用公钥解密。通常来讲私钥本身保留好,把公钥公开给别人,让别人拿到本身的公钥加密数据后发送给本身,这样只有本身才能解密。这种加密方式的特色是速度慢,CPU开销大,常见的非对称加密算法有:RSA。
- Hash:hash是把任意长度数据通过处理变成一个长度固定惟一的字符串,但任何人拿到这个字符串没法反向解密成原始数据(由于长度固定,处理后数据有所丢失,没法还原),hash经常使用来验证数据的完整新。常见Hash算法有MD5(不安全)、SHA一、SHA256。
需求
由于在信道中传输时,没法保证安全可靠,因此须要对数据进行加密,若是不对信息进行加密,坏人就能够轻易拿你的数据作坏事,这是不被容许的。那么怎么保证咱们的数据安全性呢?安全
- 使用对称加密?客户端加密后,服务端解密,看似很方便,其实否则。咱们的加密方式怎么告诉服务端呢?若直接在信道中加上加密方式,这样坏人就能截获咱们的加密方式,而后解密咱们的数据包,这和不加密有啥区别?pass!!
- 使用非对称加密?客户端生成私钥和公钥,将信息用私钥加密数据包,让服务端用公钥解密,这样服务端和客户端也能够发送信息沟通。但是,客户端用私钥加密后,在信道中截获到公钥,客户端发送的数据均可以用公钥解密,客户端发送的数据尽收眼底,私密信息就被别人知道了。pass!!!
怎么办呢?
因而,就有了这样一种方式,客户端和生成本身的私钥和公钥,因而客户端先发送一个简单的数据包,将客户端的公钥包在里面,服务端收到后,生成一个对称加密的秘钥,用公钥将其加密,再发送给客户端,而后客户端就可使用这个对称加密的密钥和服务端愉快的数据交流了。服务器
还有问题吗?
咱们说过信道里面,不可靠,也不安全。若是坏人截取了客户端的数据包,而且将其中客户端的公钥偷偷替换成本身生成的公钥,并藏在数据包里面,而后发给服务端,那么服务端生成的对称密钥就会被坏人知道,这样坏人就能够随心所欲了。怎么办?网络
CA证书
而后出现了CA证书这种东西,大型认证机构生成本身的私钥和公钥,。那么客户端Hash处理数据包(包含客户端的公钥)并向认证机构请求了帮助,让他们用私钥帮咱们加密这个数据包,而后发送给服务端。若是有坏人截取,也没法进行修改,由于这是认证机构的私钥加密,若是修改了,服务端收到后,发现用认证机构的公钥解密出来是一堆乱码,就清楚中间有人捣鬼,就会丢弃这个数据包。网站
服务端收到后,先用认证机构的公钥解(保证了这个公钥是客户端的),而后将其中的客户端公钥和其余数据进行Hash与原来的Hash进行比对,若是同样就到了客户端的公钥。而后与上面相同的操做就好啦。加密
尾
HTTPS之因此安全,其中做出了许多的加密,这只是最简单的一种形式。 那么,为何还有人使用HTTP呢?由于CA证书不会免费的发放给你,是须要你花钱的。一些小的我的网站,没有那么大的需求,天然不会使用HTTPS。计算机网络