一、什么是SSL和TLS?
SSL(Secure Sockets Layer,安全套接字层)和TLS(Transport Layer Security,传输层安全)是用于建立加密连接的技术和协议,对互联网安全至关重要。
- SSL数字证书是互联网安全的基石,用于验证网站身份并保护敏感数据传输。
- SSL连接通过加密敏感数据传输,防止非授权方窃取信息。
- TLS是SSL的升级版,提供更高级的加密和安全性。
总结:SSL和TLS是用于建立加密连接的技术和协议,在保护互联网安全方面起着重要作用。
二、HTTPS与HTTP请求的区别及流程
- HTTPS与HTTP的区别
- 端口号:HTTPS请求使用443端口,HTTP请求使用80端口。
- 安全性:HTTPS通过加密传输数据,提供更高的安全性,而HTTP是明文传输的。
- 安全套接字协议:HTTPS使用安全套接字协议(SSL/TLS)进行加密通信。
- 用途区分:HTTP适用于一般网站访问,而HTTPS适用于安全登录、支付等敏感操作的网站。
- HTTPS请求流程
- 客户端发起HTTPS请求,连接到服务器的443端口。
- 服务器发送数字证书给客户端,包含公钥和证书信息。
- 客户端验证证书的合法性和有效性。
- 客户端生成随机数,使用服务器公钥加密并发送给服务器。
- 服务器使用私钥解密客户端发送的随机数。
- 客户端和服务器使用随机数生成的对称密钥进行加密通信。
- 完成通信后,客户端和服务器关闭连接。
总结:HTTPS与HTTP的区别在于端口号、安全性和安全套接字协议。HTTPS请求的流程包括证书验证、随机数交换和对称密钥加密通信。
三、有了443端口80端口还有用吗?
443端口主要承载了加密和安全传输功能,80端口仍然具有必要性,为网络传输提供重要支持。
- 明文数据获取:在浏览器完成通过443端口的安全校验后,仍需返回80端口获取明文数据,如网页内容、图片、脚本等。
- 默认端口:80端口是网站的默认端口,可直接通过域名访问,提供便捷的用户体验。
四、为什么要使用HTTPS
对于上面的概念可能还是有些模糊,接下来就讲的实际情况。
1.我们使用http就是明文在网络传输数据传输。网络传输的过程中经过很多网络节点。
会出现的问题:
- 获取你的数据内容,对用户数据进行监听
- 伪造请求,修改数据
- 让浏览器无感,每次访问都是
中间人
的服务器
因此就出现了加密算法
-
1.对称加密(DES、3DES、AES)
- 主要特性:密钥加密数据,必须要有密钥解密才能获得数据的明文
-
2.非对称加密(RSA、DSA、ECC)
- 主要特性:私钥加密数据,可以拿公钥解密。公钥加密,只能用私钥解密。
-
3.hash算法,摘要算法
- 主要特性:Hash算法用于数据完整性验证,可以验证数据是否被篡改,如果哈希值不匹配,表明数据被篡改了。(主要用于签名校验)
2.这个时候我们数据传输就采用加密传输。
①如果使用对称加密
服务器第一次交换数据要告浏览器自己的密钥。以后数据采用密钥加密传输。
- 会出现的问题:在网络中传输,交换密钥可能会被
中间人
窃取②如果使用非对称加密
Server维护一个私钥,公钥在网络中传输给浏览器,以后每次使用私钥加密数据传输。
- 会出现的问题:第一次在传输公钥的时候会被
中间人
截取。然后中间人
可以自己做一个假的私钥和公钥,然后把假的公钥交给浏览器。而且中间人
一样可以使用公钥加密,发送伪请求。③如果使用非对称加密+hash算法
情况和②是差不多的以上主要问题就是传输密钥时候会被
中间人
获取
所以引入第三方认证机构CA
首先CA的证书是内嵌入操作系统,不需要在公网上获取。
也就是说每台电脑内置了CA的公钥
3.这个时候我们就采用上面的方式配合CA机构
第一步:浏览器请求Server获取公钥
第二步:Server接受到请求,把公钥+签名发给CA机构(hash(Server的公钥)=签名)
第三步:CA使用自己的私钥加密Server的公钥,然后使用签名算法保证不可能篡改。发送给浏览器
第四步:浏览器使用CA的公钥先校验证书,判断是否被篡改,判断Server公钥是否被篡改,然后获取Server的公钥加上随机数(加盐)
第五步:浏览器使用Server的公钥带上随机数(盐)加密传输给Server
第六步:Server使用私钥解密密文,获取到随机数,后面就采用随机数(对称加密算法)正常请求,不用再走CA机构了,也就是使用http请求就可以了。
来看看每一步会有会有什么问题吗?
第一步:第一次请求中间人
就拦截了,做不了什么事情
第二步:这个时候Server发给CA前获取Server公钥。这个时候虽然知道了Server的公钥,但是浏览器会用本地的CA公钥校验证书,所以并没有办法伪造假的公钥给浏览器。
第三步:CA发布证书时获取证书,CA的公钥中间人
也可以有。一样可以获取Server的公钥,但是和第二步一样没什么用。
第四步:做不了什么
第五步:这个时候浏览器传输的数据,中间人
没有Server的私钥无法得知数据内容。
第六步:Server已经和浏览器协商好了指定的密钥了,中间人
做不了什么
这里还有一个问题就是,当中间人做一个假的网站,让用户直接在直接使用http去请求正规网站(http://taobao.com)
所以正规的网站,都会做一个重定向,如果是http访问的网站直接跳转至https
就像我们如果第一次访问网址就http,也就会变成302请求,请求完之后会跳转到https界面。
五、https四次握手流程
301,302,307跳转陷阱?
- 301 Moved Permanently(永久重定向):
- 含义:服务器指示所请求的页面已永久移动到另一个位置。
跳转陷阱:如果网页A重定向到网页B,而网页B又重定向到网页A,形成了循环重定向的情况,导致浏览器陷入无限重定向的循环。
- 302 Found(临时重定向):
- 含义:服务器指示所请求的页面暂时移动到另一个位置。
跳转陷阱:与301类似,如果发生循环重定向,浏览器可能陷入无限循环。
- 307 Temporary Redirect(临时重定向):
- 含义:与302类似,服务器指示所请求的页面暂时移动到另一个位置。
跳转陷阱:同样,循环重定向会导致浏览器无限循环。
跳转陷阱可能会导致网页无法正确加载或无限循环跳转,给用户体验和SEO造成负面影响。为避免跳转陷阱,需要确保重定向链中没有循环重定向,并且在设计网页结构时要合理使用重定向状态码,遵循最佳实践。