浅谈网站备案和SSL证书
# 浅谈网站备案和SSL证书
前言: 我的博客站点在今天搬迁了,因为白嫖的华为云服务器到期了。copy好sql和数据卷之后,就在我买的三个月的阿里云上又开始了暂驻。迁移博客的时候,避免不了的,我需要把页面中所有提及到原先ip的地方改回来。但是我觉得挺麻烦的,脑子一热就想着可以申请一个域名,每一次迁移,直接在域名哪里换ip地址就行。现在想来,我真的是个“大聪明”!
域名前置购置事项
域名的购买选择,我们可以选择国内的或者是国外的
-
国内域名
能供国内访问,也可以供国外访问
但是缺点就是一定要实名认证 -
国外域名
有一些干净的,估计也可以供国内访问,但是比较少
而且容易被墙
优点是不需要进行实名认证
我写博客肯定是为了我自己方便访问呀!所以,我选择国内的域名
-
于是我就去阿里云买了一个cn的域名,实名认证也不算耗时间,很快就搞好了。正当我输入域名,准备访问的时候,我才发现:用域名压根访问不了。我去看了域名的解析也没有问题,为什么呢?
-
原来,我们用域名绑定了ip地址,客户端向DNS请求域名解析,DNS确实可以通过域名解析出ip地址,但是这个IP因为DNS检测到它没有在备案目录中,所以直接给它污染掉了,就访问不到。==所以,购买域名还是不够的。还需要将服务器进行ICP备案==才可以访问。
SSL证书
这个我本来也想搞一个的,无奈太贵了。那就说一下它的原理吧!
- 我们的http是基于TCP协议之上的一种应用层协议,它通过将客户端和服务端之间直接建立TCP通道直连。没有加密处理。数据在传输过程中容易被抓包泄漏修改。不能保证数据==完整性、隐私性、还有端口一致==。完整性来说,就是别人可以通过网络抓包方式来修改原先要传的数据。隐私性,http没有经过数据加密,都是明文传输,于是就会导致诸如密码、身份证号等隐私信息泄漏。至于端口一致,就是别人甚至可以伪造服务端给你发送信息,而你完全不知道。所以说,只是采用http的网站是十分危险的。
HTTPS
既然http危险,那如何传输数据呢?后来,超文本传输安全协议(也就是https)由网景公司在1994年首次提出。
https的构成
- https仍然采用http的传输模式,但是加入ssl作为安全防护
- 既然引入了ssl,那它便重新建立了一种安全保障。和http不同,https在建立安全传输前是要进行握手操作的。
https的握手过程
这里不懂==非对称加密==会有点难理解,非对称加密就是指有一把锁有两把钥匙,一把钥匙只能用来加密,一把钥匙只能用来解开另外一把钥匙加的密。缺少哪一把都不行。不能像正常钥匙那样,用它开还能用它关。
同时,解释一下签名的概念。签名其实也是通过非对称加密实现
1.client向server发送hello信息
2.server向client发送ssl证书和公钥
3.client收到证书之后,根据证书上面的签发机构和签发机构的签名,证明证书是真的。也就是client找的server是正确的。
4.client随机生成一个对称密钥,称为sessionkey,并且使用发过来的公钥进行加密sessionkey。随后发送回server。
5.server通过自己持有的私钥进行解密,得到sessionkey。再用只有对话方才知道的密钥进行加密对话,这样就可以保证会话的安全性。
- 问题来了:既然非对称加密可以保证安全性,那么为啥传输对话不都用非对称加密
非对称加密算法确实可以提供安全性,但它相比对称加密算法来说计算量大,速度慢,对于大量数据的加密传输不太适用。
综上,https有几次握手呢?一次?
其实,关于https的握手其实会有一次,或者是两次。因为每次要进行这样的运算是很浪费资源的,为了让sessionkey得到充分利用,于是引入了缓存的概念。也就是会话缓存。会话缓存一般存储在服务器的内存中。如果,客户端与服务端建立过安全连接并且缓存还生效,就只需要一次握手就可以,这一次握手就是为了使用之前的sessionkey来进行会话的。当然,如果没有,就需要两次了,一次建立安全连接,第二次和只需要一次的过程一样。
问题又来了,那我们平常听到的三次握手是指什么呢?
TCP 协议中用于建立连接的三次握手
-
相比于https和http这种应用层协议,tcp是完全不在一个层次的传输层协议,负责处理端到端的数据传输。
-
客户端发送 SYN 包:客户端向服务器发送一个带有 SYN(同步序列编号)标志的数据包,表示客户端请求建立连接,并指定初始序列号(ISN)。
-
服务器回应 SYN-ACK 包:服务器收到客户端的 SYN 包后,会回应一个带有 SYN 和 ACK(确认)标志的数据包,表示服务器已经收到了客户端的请求,并确认了客户端的 ISN,并指定自己的 ISN。
-
客户端发送 ACK 包:客户端收到服务器的 SYN-ACK 包后,会发送一个带有 ACK 标志的数据包给服务器,表示客户端确认了服务器的 ISN。
最后的最后,由于备案太麻烦了,还要居住证,我的网站还是放到国外的服务器上吧!不过最后也是没有去折腾,选择了静态页面博客加上githubPage解决了。