CA证书、https、SSL\TLS 扫盲

mbed TLS、TLS、SSL、HTTPS、TCP、MQTT的区别和关系

  mbed TLS是一个加密库,为实现TLS提供了一套API,比如:mbedtls_client_connect()、mbedtls_client_write()、mbedtls_client_read();

  TLS协议是应用层协议,定义了完整的数据包格式,HTTPS是HTTP+TLS,TLS是HTTP的上层协议,HTTP数据包作为TLS数据包的内容,比如HTTP数据包通过函数mbedtls_client_write()发送出去;

  TLS的前身是SSL,如下:

定义
 
协议
年份
SSL 1.0
未知
SSL 2.0
1995
SSL 3.0
1996
TLS 1.0
1999
TLS 1.1
2006
TLS 1.2
2008
TLS 1.3
2018

   TLS协议可以配合其他协议一起使用,TLS协议下层是HTTP协议就是HTTPS;MQTT如果走加密通道,意思就是TLS协议的下层协议是MQTT协议,MQTT数据包通过TLS协议的发送API发送出去;TLS协议下层也可以直接是TCP协议

CA证书

CA = certificate authority,是一个权威机构,负责颁发证书。

 

a.服务器 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;

b.CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;

c.如信息审核通过,CA 会向申请者签发认证文件,即证书。

  证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;

  签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名

d.客户端 C 向服务器 S 发出请求时,服务器 S 返回证书文件;

e.客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥(此公钥在客户端的根证书中)解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器 S 的公钥合法

f.客户端然后验证证书相关的域名信息、有效时间等信息;

在这个过程注意几点:

1.申请证书不需要提供私钥,确保私钥永远只能服务器掌握;

2.证书的合法性仍然依赖于非对称加密算法(保证证书不会被伪造);

3.证书=公钥+申请者与颁发者信息+签名;

4.客户端会内置权威受信任 CA 的证书信息(包含公钥)

证书的作用就是保证客户端正确收到服务器的公钥,并且客户端使用公钥加密数据发给服务器,只有合法服务器有私钥,才能解密数据,保证服务器的合法性(称作对服务器的认证)。

 

https

http存在的问题

    • 容易被监听 
      • http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的
    • 被伪装 
      • http通信时,无法保证通行双方是合法的,通信方可能是伪装的。比如你请求www.taobao.com,你怎么知道返回的数据就是来自淘宝,中间人可能返回数据伪装成淘宝。
    • 被篡改 
      • hacker中间篡改数据后,接收方并不知道数据已经被更改

https解决的问题

https很好的解决了http的三个缺点(被监听、被篡改、被伪装),https不是一种新的协议,它是http+SSL(TLS)的结合体,SSL是一种独立协议,所以其它协议比如smtp等也可以跟ssl结合。https改变了通信方式,它由以前的http—–>tcp,改为ssl——>http—–>tcp;https采用了共享密钥加密+公开密钥加密的方式

https连接过程

  • 客户端发送请求到服务器端
  • 服务器端返回证书,公钥作为证书的一部分而存在
  • 客户端通过存在本地的根证书验证证书,如果有效,则生成对称加密的密钥(以下简称密钥,对称加密计算快)并使用公钥加密发送到服务器端
  • 服务器端使用私钥解密数据,并使用收到的密钥加密数据,发送到客户端
  • 客户端使用密钥解密数据
  • SSL加密建立………

客户端认证的通信的过程

  • 客户端需要认证的过程跟服务器端需要认证的过程基本相同,并且少了最开始的两步。这种情况都是证书存储在客户端,并且应用场景比较少,一般金融才使用,比如支付宝、银行客户端都需要安装证书

 

 

 

posted @ 2018-04-27 22:13  流水灯  阅读(20)  评论(0编辑  收藏  举报