传送门:如何搭建 https 服务
1. 从 HTTP 说起
说起 HTTP 申请,咱们简直每天都在收回这样的申请,例如咱们在浏览器中输出 http://www.baidu.com 时,就是向百度的服务器收回一个 http 申请,而百度的服务器同时会给咱们返回该申请的一个回应。再例如,咱们在一个登录的场景下,输出用户名 =”123″,明码 =”666666″,而后按下登录按钮,此时 http 申请中将携带着用户名和明码两个信息提交到服务器,而后服务器从 http 申请的报文中提取到用户名和明码等信息。
很显著,http 申请存在着一个很重大的问题,http 协定传输的是明文,如果两头有个黑客拦挡到该申请,就拦挡到了咱们的数据,就能将咱们的用户名和明码看得一清二楚,这样隐衷的数据就非常容易泄露进来。
因而,咱们很容易想到,咱们能够对数据加密去解决该问题呀!这就引出了咱们明天的主题:HTTPS,于是,有了下图的场景。
能够看出,黑客即便截取到了咱们申请的数据,他看到也只是一串乱码,基本不晓得是啥子玩意,所以,HTTPS 就是一种将数据加密后再传输的协定。
2.HTTP 和 HTTPS 的比照
从上图能够看到,HTTP 和 HTTPS 协定底层都是基于 TCP 的协定,只是 HTTPS 协定两头多了一层 SSL 或者 TLS,因而,很简略,HTTPS 就是 HTTP 协定加上 SSL/TLS。TLS 是 SSL 的升级版,它们的作用都是进行加密的连贯。
3. 对称加密
特点:靠一个密钥来加密数据,应用雷同的一个密钥来解密数据。首先用户须要把本人的一把钥匙给送给服务器,用户用这把钥匙加密数据,而后服务器待会拿这把雷同的钥匙去解密用户接下来发送的数据。
那么,这样的加密算法有什么不妥呢?首先,如果用户领有雷同的密钥的话,我的密钥能解你的数据,你的密钥能解密我的数据,这样,居心叵测的用户就能截取和破解你的数据了,所以,每个用户都必须领有一把只属于本人的密钥,那每个用户的密钥都要先发给服务器,那有 5000 万个用户服务器就有 5000 万把密钥,这显著给服务器减少了太多太多的负荷,这是显然不合乎咱们的需要的;其次,如果在客户端第一次发送密钥给服务器的时候,此次发送是明文发送的,黑客此刻在两头截取到了咱们的密钥,那接下来的数据黑客也能破解掉,这显著也是不合乎咱们的需要。然而,该加密形式计算量小,加密和解密的速度比拟快,适宜加密比拟大的数据。好了,讲完对称加密,咱们晓得对称加密存在着一些毛病,由此产生了第二种的加密形式,就是非对称加密。
4. 非对称加密
特点:有一个公钥和一个私钥,公钥加密只能私钥解密,私钥加密只能公钥解密。因为解密和加密应用不同的钥匙,所以称为非对称加密。公钥和私钥都放在服务器上,公钥是能够轻易传输的,私钥是相对不会裸露的,数据传输是平安的。
说了这么多形象的东东,咱们看一个具体的例子。
首先服务器端把公钥传给客户端,客户端拿到公钥后对数据进行加密,而后客户端发送应用公钥加密过的数据到服务器,服务器收到加密后的数据后应用私钥对数据进行解密。
此刻,黑客即便拿到公钥和公钥加密后的数据,也没法解密,因为公钥加密的数据公钥是解不了的,只有私钥能解。
该加密形式数据传输尽管平安,然而计算量大,加密和解密的速度比较慢。
那么,有没有一种办法是加密解密速度快,而且又是数据传输平安的呢?依据对称加密的长处和非对称加密的长处,由此诞生了 HTTPS 的加密形式,接下来咱们看一下 HTTPS 加密、解密及验证的过程。
5.HTTPS 加密、解密及验证过程
如果服务器端存有一个公钥 777 和一个私钥 888,首先,浏览器收回一个 https 申请,如 https://www.baidu.com,服务器端响应申请,返回一个 SSL 数字证书给客户端,SSL 数字证书包含了公钥和服务器的身份标识信息,客户端收到 SSL 数字证书之后,验证该数字证书是否无效,如有效,则浏览器会收回不平安正告,如无效,就会学生成一个随机码如 6666,而后应用公钥 777 对这个随机码进行加密,而后传输该加密后的随机码到服务器,服务器应用私钥 888 进行解密,失去客户端的随机码为 6666,以上该过程就是咱们说的非对称加密。此时,客户端和服务器都同时领有了该随机码 6666,而后,把这个随机码 6666 用作对称加密的密钥,用密钥 6666 对 userName 和 passWord 的信息进行加密,发送到服务器端,服务器端同样应用雷同的密钥 6666 对数据进行解密,最初失去 userName 和 passWord 的信息。以上为整个 HTTPS 加密、解密及验证的过程。
总结
本文从 HTTP 的不平安引出 HTTPS,HTTPS 就是在 HTTP 的根底上减少了一层 SSL 的加密协议,而后进一步讲述了两种不同的加密形式,别离是对称加密和非对称加密,而后讲述了两者的不同及各自的优缺点,HTTPS 综合了两种加密形式,最初,给出了残缺的 HTTPS 加密、解密及验证过程。