- Http和Https的区别
- https协议需要Ca申请证书
- http是超文本协议,信息是明文传输,https是安全的ssl加密明文传输
- http和https使用的是不同的连接方式,端口也不一样,http是80开头的端口,https是443
- http连接简单,访问速度快,https是SSL+http,需要验证及加密的,更加安全,但是访问速度慢
- http连接过程
域名解析——》发起TCP的三次握手——》TCP连接后发起http请求——》服务器响应http请求——》服务器处理后,返回数据给客户端
服务器返回的常见状态代码、状态描述的说明如下。
- 200 OK:客户端请求成功。
- 301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向。
- 302: 临时重定向,显式重定向, Location响应首部的值为新的URL。
- 304:Not Modified 未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可。
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
- 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
- 403 Forbidden:服务器收到请求,但是拒绝提供服务。
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
- 500 Internal Server Error:服务器发生不可预期的错误。
- 502: Bad Gateway 前面代理服务器联系不到后端的服务器时出现
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。
- 504:Gateway Timeout 这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应
- https连接过程
数字证书如何生成?
服务器端会生成一对公私钥,将公钥和一些相关信息提供给CA机构,CA机构会根据这些信息生成一个数字证书。
一般证书都包含三部分:证书内容,散列算法,加密密文
证书内容包含了:服务器公钥、持证人信息(域名、有效期等)、签名信息
加密密文:证书内容进行散列算法,得出散列值,然后用CA的私钥对散列值进行RSA加密得到的加密密文
客户端如何校验证书合法性?
1、客户端会内置一个CA证书,客户端https访问服务器的时候,服务器将返回数字证书,
2、客户端用内置的CA证书对数字证书的加密密文进行RSA解密,得到散列值,然后对证书内容进行同样的算法进行Hash算法,得到另一个散列值,比较两个散列值是否一致
3、检查域名是否一致、证书是否过期
4、客户端生生一个随机数,用证书里的服务器公钥对随机数进行非对称加密,传给服务器,服务器端用私钥进行解密获取到随机数
5、客户端用随机数对报文进行对称加密,发送给服务器,服务器用随机数解密获取报文