http与https
来源:互联网 发布:深入java虚拟机 第四版 编辑:程序博客网 时间:2024/06/05 11:33
HTTP+ 加 密 + 认 证 + 完 整 性 保 护 =HTTPS
HTTPS和HTTP协议相比提供了
- 数据完整性:内容传输经过完整性校验
- 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
- 身份认证:第三方无法伪造服务端(客户端)身份
因为:HTTPS虽然用到了公开密钥加密,但同时也结合了其他手段,如对称加密,来确保授权、加密传输的效率、安全性。
加密通信
一条完整的HTTPS请求应该是这样的:
- 客户端 (浏览器) 发起 HTTP 请求,请求连接服务端,发送支持的加密通信协议 (和版本),并且生成一个随机数,后续用于生成”对话密钥”。
- 服务端确认加密通信协议 (和版本),同时也生成一个随机数,后续用于生成”对话密匙”,并且将 CA 颁发的数字证书,一起发送给客户端。
- 客户端收到数字证书后,检测内置的”受信任的根证书颁发机构”,查看解开数字证书的公匙是否在。
- 如果解开数字证书的公匙存在,则使用它解开数字证书,得到正确的服务器公匙,同时再次生成一个随机数,用于服务器公匙加密,并发送给服务器。
- 此时本地和服务器同时将三个随机数,根据约定的加密方法进行加密,各自生成本次会话的所使用的同一把 “会话密匙” 。
- 到这里,认证阶段已经完毕,数据传输从 非对称加密 换成了 对称加密 (因为考虑到性能),接下来所有的数据传输都是使用HTTP协议进行传输,只不过使用了 “会话密匙” 来加密内容。
概括来说,整个简化的加密通信的流程就是:
- 小明访问XX,XX将自己的证书给到小明(其实是给到浏览器,小明不会有感知)
- 浏览器从证书中拿到XX的公钥A
- 浏览器生成一个只有自己自己的对称密钥B,用公钥A加密,并传给XX(其实是有协商的过程,这里为了便于理解先简化)
- XX通过私钥解密,拿到对称密钥B
- 浏览器、XX 之后的数据通信,都用密钥B进行加密
HTTPS和HTTP的区别
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
SSL
- SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
- SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
0 0
- https与http
- https与http切换
- HTTPS与HTTP区别
- Http与https区别
- HTTP与HTTPS区别
- HTTP与HTTPS区别
- http与https区别
- HTTP与HTTPS
- HTTP与HTTPS
- http与https请求
- HTTP与HTTPS SSL
- HTTP与HTTPS
- HTTP与HTTPS详解
- http与https
- http与https
- iOS9 http与https
- http与HTTPS
- HTTP与HTTPS比较
- CSS Flex布局 语法以及实例
- IntelliJ IDEA使用
- python enumerate()函数
- IPC讲解比较细致的。转载学习。
- 原生JS实现瀑布流
- http与https
- change YUM from redhat 7 to Centos 7
- 利用Fiddler进行http抓包
- 代码的编译+链接过程的介绍
- 如何使用Spring Cloud – 简单服务流程(服务发现与API调用)
- 常见浏览器兼容问题、盒模型2种模式以及css hack知识讲解
- angularjs $http.get 和 $http.post 传递参数
- 【DVB】DVB 2017年工作计划
- ubuntu-opencv配置与安装