浅谈HTTPS

2017-02-08  本文已影响28人  貌似很有道理呢

HTTPS:基于 SSL/TLS 的安全的 HTTP

  1. 所有信息都是加密传播,第三方无法窃听;
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现;
  3. 配备身份证书,防止身份被冒充。

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密.

SSL/TLS 的基本过程

  1. 客户端向服务器端索要并验证公钥;
  2. 双方协商生成“对话密钥”;
  3. 双方采用“对话密钥”进行对称加密通信;

SSL 数字证书的签名和验证过程

加密算法

SSL 握手过程中心思想:SSL 握手过程中客户端使用服务端给的 RSA 公钥对 用于生成最终对话密钥的随机数 进行加密(RSA 非对称公钥加密法),并传给服务端;随后双方在数据传输过程中使用上述生成的对话密钥进行对称加密(对称加密算法由双方在握手过程商定),同时保证了安全和效率。

每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。

SSL/TLS握手图解,自己吭哧吭哧画一堆,也没人家画得好,直接见 http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html ,阮老师很牛x的,

公钥存放在数字证书中,由服务端发给客户端,只要证书可信,公钥就可信。

数字证书

字段 说明
Subject Name 证书持有者的相关信息(国家/地区、组织、单位、CN)
Issuer Name 证书颁发者的相关信息(国家/地区、组织、单位、CN)
Common Name Subject Name 和 Issuer Name 信息里都包含一个常用名称字段(Common Name, CN),对于 CA 证书而言,该字段表示 CA 机构的名称,对于用户证书而言,通常是相应的域名。
Serial Number CA 机构给该证书的唯一序列号
Not Valid Before 证书生效日期
Not Valid After 证书失效日期
Public Key 服务端公开的密钥(RSA 公钥)
Signature Algorithm 签名所使用的算法(SHA-1,SHA-256 等)
Signature CA 机构给该证书的签名,用于验证证书是否被篡改

HTTPS 请求前的 SSL 握手过程中,用户证书和中间 CA 证书由服务端返回,而根 CA 证书则保存在客户端系统的可信任 CA 列表中。

证书更新策略

  1. 服务端计算出证书文件的 MD5 值,作为这个文件的数字签名。
  2. 服务端通过私钥加密第 1 步算出的 MD5 值,得到一个加密后的 MD5 值。
  3. 把证书文件和加密后的 MD5 值一起下发给客户端。
  4. 客户端拿到加密后的 MD5 值,通过保存在客户端的公钥解密。
  5. 客户端计算证书文件的 MD5 值。
  6. 对比第 4/5 步的两个 MD5 值(分别是客户端和服务端计算出来的 MD5 值),若相等则通过校验。

只要通过校验,就能确保证书在传输的过程中没有被篡改,因为第三方若要篡改证书文件,必须计算出新的证书文件 MD5 并用私钥加密,客户端公钥才能解密出这个 MD5 值,而在服务端未泄露的情况下第三方是拿不到私钥的。

上一篇 下一篇

猜你喜欢

热点阅读