完全搞懂https原理

我终于完全理解了https原理!!!激动之下,写一篇博客,搞一波分享!!!

本篇博客比较精彩的地方:

思惟方式:也是借鉴一位大佬的,写得很棒。https://blog.csdn.net/guolin_blog/article/details/104546558
图文并茂,简单明了,化繁为简。算法

关于https原理,有很是很是多的博客,然而其中不少博主都不必定彻底理解,只是单纯地为了写博客而写博客。浏览器

基础知识铺垫

虽然咱们不必定是专门搞密码学的,但多多少少仍是要知道一点的。否则的话,接下来的知识可能没法理解。
一、对称加密算法:加密和解密使用相同的密钥。
二、非对称加密算法:加密和解密使用不一样的密钥,一个成为公钥,另外一个则是私钥,二者是成对的。公钥用来加密,私钥用来解密。
备注:https原理中,这两种算法都用到了。至于其余加密算法,咱就很少说了。安全

http传输原理

(其实呢,浏览器和服务器之间信息传输并非直接的,中间还会有个中间路由。)
服务器

解释一下http到底不安全在哪里

正如图中所看到的,若是有人经过中间路由恶意篡改传输的信息,那会怎样?浏览器接收到的信息都被篡改了,后果不堪设想。
https所以诞生。在http基础上加上了SSL/TLS协议。就是为了防止以上的这种状况。网站

思惟风暴:

试想,若是是咱们,咱们会怎么处理这种状况呢?跟着这个思惟走下去,你便会提现到这种思惟的魅力
首先,咱们很天然地会想到,信息在传输期间进行加密,浏览器和服务器那边再进行解密。这样的话,即便监听者获得了这些信息,他也没法进行解密。这样便安全了。加密

那又有问题了,以上这种加密即是采用的对称加密,那密钥怎么获得呢?.net

咱们知道,浏览器一开始是向服务器发送请求的,那密钥一定是浏览器发给服务器的。这样的话,监听者仍是能够经过中间路由获得这个密钥,而后经过密钥进行解密,治标不治本。或者直接随便恶意篡改这个密钥,后果可想而知。那怎么办呢?blog

咱们可能也很天然地想到,若是把浏览器发给服务器的密钥进行加密,不就能够了吗?这样的话,的确解决了问题。路由

把浏览器发给服务器的密钥进行加密,咱们很天然地会想到,使用非对称加密算法即可以实现。那怎么作到这一点呢?get

这也是个计算机届的难题,卡在这儿,走不下去了。

某一天,某个天才忽然想到了,浏览器给服务器发送一个请求。打破常规,若是请求两次呢?第一次只请求公钥,获得公钥后,浏览器生成一个密钥(这里称做浏览器密钥),使用公钥进行加密,第二次请求附带上使用公钥进行加密的浏览器密钥,服务器接收后,使用私钥进行解密不就获得了浏览器密钥吗?接下来,传输信息,只需经过浏览器密钥进行加密解密不就成了。这样的话,问题不就解决了吗?的确如此。

最后一个问题,服务器端的公钥和私钥怎么来的呢?
这便诞生出了CA机构。
CA机构专门给网站服务器端添加公钥和私钥(就是所谓的数字签名证书),固然还有一些其余的信息,好比网站域名、证书有效期等。
还有一点要说明一下,浏览器是如何验证公钥的?
浏览器获得服务器发送的公钥后,会和系统内置的证书进行比对即可验证真假了。

总结:

https原理:

一、浏览器给服务器发送一个http请求,获得公钥。
二、将公钥和系统内置证书进行对比,并验证有效期,而后生成一个随机浏览器密钥并使用公钥加密,接着再发送一个http请求。
三、服务器接收到用公钥加密的浏览器密钥后,使用私钥进行解密。
四、接下来传输便经过浏览器密钥进行加密解密。即便监听者经过中间路由接收到了信息,也没法解密,恶意篡改的话,浏览器和服务器端会识别到,中断链接。这样的话,便安全了。

怎么升级到https?

将http升级到https,比较简单,购买SSL证书,而后将证书安装到网站服务器端便可。通常而言,购买SSL证书的话,第一年是免费的,而后每一年差很少要4k左右。(还挺贵的。。。)固然了,http升级到https,网站访问速度要稍微下降一些的,毕竟有个加密解密的过程嘛!

知识在于分享传播,在分享传播的过程当中,会逐步进行凝练和升华!