先来了解http与https的基本概念。
http (HyperText Transfer Protocol,超文本传输协议),是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP,Transmission Control Protocol,传输控制协议),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少,明文传递。
https (Hyper Text Transfer Protocol over SecureSocket Layer,安全套接字层超文本传输协议),以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL(Secure Sockets Layer,安全套接字协议),因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
再来学习一下https的工作原理。
浏览器在使用HTTPS方式与Web服务器通信时有以下步骤:
浏览器发起往服务器的 443 端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。服务器收到请求,选择浏览器支持的加密算法和哈希算法。服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的,也可以是自制的。浏览器进入数字证书认证环节,这一部分是浏览器内置的 TSL 完成的: 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。浏览器生成一个随机数 R,并使用网站公钥对 R 进行加密。浏览器将加密的 R 传送给服务器。服务器用自己的私钥解密得到 R。服务器以 R 为密钥使用了对称加密算法加密网页内容并传输给浏览器。浏览器以 R 为密钥使用之前约定好的解密算法获取网页内容。
首先:非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。
另外:在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密
为什么需要CA机构颁发证书?防止”中间人“攻击,同时可以为网站提供身份证明。
使用https会被抓包吗?会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
所以http和https的风险和缺点是?
http与https的区别是?
证书的作用是证明你是这个网站的拥有者。谁去证明?最顶级的 CA 去帮你证明,这些顶级的 CA 都是浏览器、操作系统本身就自动帮你集成,而且自动添加到设置信任里面去;
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。http和https使用的是完全不同的连接方式,用的端口也不一样,http是80,https是443。http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。请求行 请求方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECTURLhttp协议版本号请求头:格式为“属性名:属性值”,键值对,服务端据此获取客户端的信息。空行:请求头后,通知服务器不再有请求头请求数据 若方法字段是GET,则此项为空,没有数据若方法字段是POST,则通常来说此处放置的就是要提交的数据 请求方法说明备注GET
要求服务器将URL定位的资源放在响应报文的数据部分,
回送给客户端。 请求参数和对应的值附加在URL后面,
利用一个问号(“?”)代表URL的 结尾与请求参数的开
始,传递参数长度受限制,key=value,各个数据之间
用”&”符号隔开
1.不适合传送私密数据 2.浏览器对url的字符限制一般不超过1024, 需要传送大量数据的时候,也不适合使用 GET方式POST向web服务器发送数据让web服务器处理 HEAD检查一个对象是否存在服务端接受到HEAD请求后只返回响应头,
而不会发送响应内容。当我们只需要查看
某个页面的状态的时候,使用HEAD是非常高效的,
因为在传输的过程中省去了页面内容。
PUT向web服务器发送数据并存储在web服务器内部 DELETE从web服务器上删除文件 OPTIONS查询web服务器的性能 TARCE跟踪到服务器的路径 CONNECT对通道提供支持响应行 协议版本状态码状态描述响应头:格式为“属性名:属性值”,键值对,用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。响应体:响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
类别原因短语1XXInformational(信息性状态码)接受的请求正在处理2XXSuccess(成功状态码)请求正常处理完毕3XXRedirection(重定向)需要进行附加操作以完成请求4XXClient error(客户端错误)客户端请求出错,服务器无法处理请求5XXServer Error(服务器错误)服务器处理请求出错常见状态代码、状态描述的说明如下:
状态码状态描述说明200OK表示从客户端发送给服务器的请求被正常处理并返回204No Content表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体 的主体部分(没有资源可以返回)206Patial Content表示客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文 中包含由Content-Range指定范围的实体内容301Moved Permanently永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL302Found临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL303See Other表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源304Not Modified表示客户端发送附带条件(是指采用GET方法的请求报文中包含if-Match、 If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任 一首部)的请求时,服务器端允许访问资源,但是请求为满足条件的情况下返回改状态码307Temporary Redirect临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从POST 变成GET;(不同浏览器可能会出现不同的情况)400Bad Request表示请求报文中存在语法错误401Unauthorized未经许可,需要通过HTTP认证403Forbidden服务器拒绝该次访问(访问权限出现问题)404Not Found表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用500Inter Server Error表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时503Server Unavailable表示服务器暂时处于超负载或正在进行停机维护,无法处理请求504Gateway Timeout网关超时,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答