https比http安全在哪里?http是明文传输,如果被中间人劫持,你提交的表单(例如输入的密码)就会被窃取。而https是加密传输,即使被截取,得到的也是密文,无法直接破译。
https协商要比http复杂一些,简单来说,分为几步:
- 客户端发起http请求,服务端返回他的数字证书
- 客户端(浏览器)根据自己所知道的CA机构密钥,一一验证服务端的数字证书是哪个CA颁发的(即用CA的公钥去解密数字证书,能解出来的就是该CA颁发的)
- 再确认是一个可信CA颁发了服务端证书后,(上一步解密会得到服务端公钥),客户端使用对端(服务端)公钥加密消息,开始进行http连接,此时应该会带上自己(客户端)的公钥
- 消息到达服务端后,这样双方就有了各自的公钥,可以互相发送加密消息
数字证书是什么,解决了什么问题?
数字证书是用来验证一个公钥所有权的密文,里面通常包含公钥持有人的公钥、基本信息(单位,名称,域名等)。数字证书一般由可信的第三方机构(CA-Certification Authorization机构)颁发。公钥所有人去CA机构申请证书,通常要缴费。而申请证书其实就是让CA用自己的私钥给公钥所有人的相关信息(他的公钥和基本信息)加密,加密后的产物就是公钥所有人的数字证书。
数字证书就是“公钥的数字签名”!see:https://www.cnblogs.com/gide/p/16650487.html
如果没有CA机制会发生什么问题?
甲想给乙发信(加密的那种),因此他需要乙的公钥。但甲并非天生就有乙的公钥,在他获取公钥的过程中如果被第三者丙劫持,伪造一个公钥,那么甲会得到一个伪造的乙的公钥,他所有向乙发送的加密消息都会被丙知道,丙完全冒充了乙。因此,甲必须有证明“这个公钥就是乙的”的办法。为此他要求乙向CA机构申请数字证书,之后他会请求乙的数字证书。而丙无法伪造一个数字证书,使得甲误认为这是乙的证书。因为证书是由可信的CA机构颁发,已经给乙颁发了,不可能给丙再颁发一个带有同样个人信息的证书。且丙也无法绕过CA伪造证书,因为证书是由CA的私钥加密而来的。
X.509证书
X.509是ITU-T定义的证书格式,它包含
- 两个 专有名称,用于唯一标识颁发证书的认证中心 (CA) 和 主体集 (向其颁发证书的个人或组织)。 专有名称包含多个可选组件:
- 公共名称
- 组织单元
- 组织
- 位置
- 省/自治区/直辖市
- 国家或地区
- 数字签名。 签名由认证中心使用公用密钥加密技术创建:
- 安全散列算法用于创建证书内容的摘要。
- 摘要使用认证中心的专用密钥进行加密。
- 使用 CA 的公用密钥对签名进行解密。
- 制作证书内容的新摘要,并与解密的签名进行比较。 任何差异都表明证书可能已更改。 因此,数字签名向接收方保证,自证书发放以来,未对其进行任何更改。
- 主体的域名。 接收方将此与证书的实际发送方进行比较。
- 主体的公用密钥。
HTTPs的安全性🔐
一言以蔽之,HTTPS的流量是经过加密的,即便被中间人截取也无法轻易破译。HTTP的流量是明文的,裸奔!
从超文本传输协议说起,HTTPs的
对称加密
数学定义
非对称加密
所谓非对称加密
窃听三重奏(一)
数字签名
数字证书
HTTPs的连接建立