HTTP HTTPS
其实我对http协议也是一知半解,因为网络底层基本没学,半路出家,土话叫野路子。所以发表这片文章也是想多学习。多探讨。不说废话了,一起来学习吧
HTTP三次握手
http协议默认使用TCP的80端口进行通信。通过在浏览器中输入网站地址(URL),发起http请求。个人理解,通俗的讲有这么几个:
1、客户端访问地址,经过DNS解析,找到服务器地址。请求建立一个tcp连接。
2、服务器端收到要连接的信息,返回一个信号。
3、客户端验证是不是连接成功然后发起请求。
后面就能理解了,服务器端返回一个html页面,然后游览器接收到后,解析html,构建dom树,css排绘。再跑一些js脚本。然后一个页面就出来了。。大概是这样。扯得有点远了。
http不安全
用chrome游览器的小伙伴经常会发现出现一个提示,不安全。例如之前的12306老给我提示说不安全,为什么说不安全呢。其实和传输过程有关,举个栗子:通俗的说就是,你的手机可能被监听,你和别人打电话的信息都有可能被人窃听。妹子的信息被别人知道了可还得了。不得了不得了。哈哈哈。
很多人好奇怎么监听,监听渠道很多,只要连接上你家的路由器,非https的网络包都可以抓到,很多前端朋友可能有点迷抓包,就是你chrome的F12网络那个。你的请求数据都可以被别人看到,比如某个小网站,呵呵呵。或者从运营商想法介入,强行插入广告,给你网站全部插入各种广告,写脚本等等等等,很多就不一一举例子了。
HTTPS的诞生
被人拦截怎么办。很简单,加密啊。再拿打电话举栗子。你的翻译懂26个语言,你的对面的翻译也懂26门语言,翻译之间打电话用26种语言说一句话,再用一种语言传达给你。这样就达到了加密的效果,(窃听的人也会26种语言怎么办)别跟我钻牛角尖哈,我这里只是举个栗子。我们来看下整个过程:
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。
http 转 https 的26种语言
读到这你会好奇这个26种语言是什么东西。证书。就两字,证书种类也是各种各样,现在还有什么企业专用,个人的,还有泛域名(通配)的,单一域名的。这里我就大概说两个最常见的
泛域名 :例如你的域名:abc.com ,那么你的证书可以使用在:abc.abc.com、xxx.abc.com、hhh.abc.com等等都是可以使用的,不过一般这种证书。。。没有免费的。你的花money。具体去百度搜搜。价格贵的离谱的也是有的
单一域名:例如你的域名:abc.com,那么不好意思,你的证书只能用在 abc.com或者 www.abc.com ,就这么不讲道理,这个有个好处就是免费申请,有途径。买域名基本也会送的。
实战
这里举个例子吧,就拿nginx的。
这里我就想讲了,看两个链接