HTTP的常识详细能够查看本篇博客: Web基础与HTTP协议 – 掘金 ()
一 常识点回顾
状况码首位 | 已定义规模 | 分类 |
---|---|---|
1xx | 100-101 | 信息提示 |
2xx | 200-206 | 成功 |
3xx | 300-305 | 重定向 |
4xx | 400-415 | 客户端过错 |
5xx | 500-505 | 服务端过错 |
1.2 HTTP常见状况码
状况码 | 功用描绘 |
---|---|
200 | 一切正常 |
301 | 永久重定向 |
302 | 临时重定向 |
401 | 用户名或密码过错 |
403 | 制止拜访(客户端IP地址被回绝) |
404 | 恳求的文件不存在 |
414 | 恳求URI头部过长 |
500 | 服务器内部过错 |
502 | 无效网关 |
503 | 当前服务不可用 |
504 | 网关恳求超时 |
二 HTTP拜访的进程
1、客户端经过域名进行拜访,先进行DNS域名解析。
2、之后客户端恳求与web服务器树立TCP衔接(三次握手)。
3、树立衔接后,客户端向web服务器发送一个HTTP恳求。
4、服务器呼应HTTP恳求,客户端的阅读器得到HTML代码。
5、阅读器解析HTML代码,并恳求HTML代码中的资源。(阅读器拿到HTML文件后,开端解析HTML代码,遇到静态资源时,就向服务器去恳求下载。)
6、断开TCP衔接(四次挥手),阅读器对页面进行渲染呈现给用户。
三 HTTPS原理
3.1 TLS/SSL 的功用完成主要依赖于三类基本算法
散列函数 、对称加密和非对称加密,其运用非对称加密完成身份认证和密钥洽谈,对称加密算法采用洽谈的密钥对数据加密,根据散列函数验证信息的完整性。
非对称加密是完成身份认证和密钥洽谈;
对称加密是对信息进行加密;
3.2 SSL/TLS协议和证书的关系
为确保网络安全,咱们需要给服务器颁布证书,这个证书能够自己生成,可是自己颁布证书是不安全的,能够被别人假造,所以咱们一般都是在第三方认证组织购买证书
。那么问题来了,证书究竟和协议是否有相关,咱们是否需要差异SSL证书和TLS证书呢?答案是否定的,证书不依赖协议,和协议没有太大相关,咱们也不需要去纠结是运用SSL证书和TLS证书,协议由服务器配置决议,证书是配合协议一块运用的
。
3.3 私钥、公钥、对称密钥的差异?分别是什么?
对称密钥只要一个,能够是字符串,也能够是数字,对应的加密方法是对称加密。
公钥和私钥成对呈现.揭露的密钥叫公钥,只要自己知道的叫私钥
1.公钥和私钥成对呈现.揭露的密钥叫公钥,只要自己知道的叫私钥
2.公钥用于灵敏信息的加密,私钥用于签名.所以公钥的效果是确保数据安全,私钥的效果的符号信息的发送方.
3.用公钥加密的数据只要对应的私钥能够解密,用私钥签名只要对应的公钥能够验签.
4.用公私钥加解密的方法叫作非对称加密.
5.其实通讯两边运用同一对公私钥也是能够的.
3.4 对称加密
这种方法加密和解密同用一个密钥。加密和解密都会用到密钥。以对称加密方法加密时必须将密钥也发给对方。
1:许许多多的客户端,不可能都用同一秘钥进行信息加密,该怎样办呢?
解决办法:一个客户端运用一个密钥进行加密
2:既然不同的客户端运用不同的密钥,那么对称加密的密钥如何传输?
解决办法:只能是「一端生成一个秘钥,然后经过HTTP传输给另一端」
3:这个传输密钥的进程,又如何确保加密?「假如被中间人拦截,密钥也会被获取,」 那么你会说对密钥再进行加密,那又怎样保存对密钥加密的进程,是加密的进程?
解决办法:非对称加密
3.5 运用证书拜访的作业流程:
- 客户端建议HTTPS恳求,衔接到服务器的443端口。
- 服务器必需要先申请好一套数字证书(证书内容有公钥、证书颁布组织、失效日期等)。
- 服务器将自己的数字证书发送给客户端(公钥在证书里边,私钥由服务器持有)。
- 客户端收到数字证书之后,会先验证证书的合法性。假如证书验证经过,就会运用伪随机数生成器(/dev/random)随机生成一个【对称密钥】,运用证书的公钥加密这个【对称密钥】。
- 客户端将公钥加密后的【对称密钥】发送到服务器。
- 服务器接收到客户端发来的密文密钥之后,用自己之前保存的私钥对其进行非对称解密,解密之后就得到客户端的【对称密钥】,然后用客户端的【对称密钥】对返回数据进行加密,这样传输的数据都是密文了。
- 服务器将加密后的密文数据返回到客户端。
- 客户端收到后,用自己的【对称密钥】对其进行对称解密,得到服务器返回的数据。
3.6 HTTP 与 HTTPS 的差异
- HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
- HTTPS比HTTP愈加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;
- HTTPS需要用到SSL证书,而HTTP不用【(HTTPS是安装SSL的服务器,HTTP是未安装SSL的服务器)】;
- HTTPS规范端口443,HTTP规范端口80;
- HTTPS根据传输层,HTTP根据应用层;
- HTTPS在阅读器显现绿色安全锁,HTTP没有显现;
3.7 既然HTTPS那么安全可靠,那为何不一切的Web网站都运用HTTPS
- 首先,很多人还是会觉得HTTPS
施行有门槛
,这个门槛在于需要威望CA颁布的SSL证书。从证书的选择、购买到布置,传统的形式下都会比较耗时耗力。 - 其次,HTTPS普遍认为性能耗费要大于HTTP,由于与纯文本通讯比较,加密通讯会耗费更多的CPU及内存资源。假如每次通讯都加密,
会耗费相当多的资源
,平摊到一台核算机上时,能够处理的恳求数量必定也会随之削减。但事实并非如此,用户能够经过性能优化、把证书布置在SLB或CDN,来解决此问题。举个实际的例子,“双十一”期间,全站HTTPS的淘宝、天猫仍然确保了网站和移动端的拜访、阅读、交易等操作的顺利、滑润。经过测试发现,经过优化后的许多页面性能与HTTP相等甚至还有小幅提高,因此HTTPS经过优化之后其实并不慢。 - 除此之外,想要节省购买证书的
开销
也是原因之一。要进行HTTPS通讯,证书是必不可少的。而运用的证书必须向认证组织(CA)购买。 - 最后是
安全意识
。比较国内,国外互联网行业的安全意识和技术应用相对成熟,HTTPS布置趋势是由社会、企业、政府共同去推动的。
HTTPS作业流程总结
- 客户端发送https恳求到服务端的443端口(NDS解析、TCP衔接)
- 服务端会先发送服务端证书文件给客户端
- 客户端会先验证服务端证书文件的有效性
- 客户端验证经过后会运用服务端证书文件里的公钥加密自己运用伪随机数生成的会话密钥,并发送给服务端
- 服务端会运用私钥对加密的会话密钥进行解析获取会话密钥
- 之后服务端和客户端的通讯都会运用会话密钥传输和解密获取