前言–阅读本文你将收获
1.https加密的基本原理与过程,https为什么是安全的?
2.什么是中间人攻击,中间人攻击的基本原理
3.如何防止中间人攻击
作者:RicardoMJiang
链接:https://juejin.im/post/6880024440143347719
https加密的基本原理
https要完成的目的
1.Client必须要能确定,它要访问的Server确实是正确的Server
2.Client和Server交流的信息不能被其它第三方窃听
3.当然,针对第1点,反过来,Server也可以要求,必须确认Client是它想通信的正确的Client,不过道理和1一样,这里不展开
通过HTTPS握手建立加密信道来保证上述要求
https三次握手
三次握手过程如下:
看了上述三次握手过程,可以知道,handshake主要完成的事情:
1.客户端&服务端通信,协商加密方式
2.客户端(Client)和服务端(Server)互相确认身份
3.双方安全地交换https通信使用的密钥(Session Key)
第一阶段:C&S协商加密方式
客户端向服务端发送ClientHello信息,信息主要包括客户端支持的加密方式、客户端支持的SSL版本等;服务端接收到ClientHello信息后,向客户端发送一个ServerHello信息,主要是告诉客户端它将使用什么加密方式和SSL版本。
第二阶段:身份校验
阶段2主要是,客户端&服务端互相校验对方身份
客户端与服务端之间验证身份是通过证书完成的
1.关于证书:
服务端向客户端下发自己的证书,通常是CA认证的证书。证书包括了很多信息,主要有“公钥信息”、“签名”、“组织机构地区等信息”、“证书颁发机构”,关联的中级证书(medium certificate)、根证书(root certificate)等。
X.509 应该是比较流行的 SSL 数字证书标准,包含(但不限于)以下的字段:
字段 | 值说明 |
---|---|
对象名称(Subject Name) | 用于识别该数字证书的信息 |
共有名称(Common Name) | 对于客户证书,通常是相应的域名 |
证书颁发者(Issuer Name) | 发布并签署该证书的实体的信息 |
签名算法(Signature Algorithm) | 签名所使用的算法 |
序列号(Serial Number) | 数字证书机构(Certificate Authority, CA)给证书的唯一整数,一个数字证书一个序列号 |
生效期(Not Valid Before) | (`・ω・´) |
失效期(Not Valid After) | (╯°口°)╯(┴—┴ |
公钥(Public Key) | 可公开的密钥 |
签名(Signature) | 通过签名算法计算证书内容后 |