https加解密过程详解和TLS证书验证

18 篇文章 0 订阅
2 篇文章 0 订阅

定义

HTTPS是HTTP over SSL的简称,即工作在SSL上的HTTP,也就是加密通信的HTTP。

 

工作原理

HTTPS在通信过程中使用的是对称加密,当然,它的密钥是无法直接获取的,因为它的密钥是通过非对称加密进行传输的,中间还有很多复杂的过程,保证密钥是绝对安全的。

先简单看下https的加密过程,如下图:

文字描述一下这个过程,就是:

  1.客户端访问 https开头的url

  2.服务端返回公钥1,客户端验证通过(如果不通过,则访问终断)。

  3.客户端根据公钥1生成一个私钥2,这个私钥2用来加密和解密请求信息。使用公钥1对私钥2进行加密,回传给服务端。服务端用私钥1对该信息解密,得到私钥2。至此,客户端和服务端都已经有了私钥2。

  4.客户端和服务端之间使用私钥2对信息进行加密后通信,这样即使第三方抓包,也无法轻易获取通信内容了。

这里的公钥1和私钥1是非对称加密,私钥2是对称加密。

  • 对称密钥(Symmetric-key algorithm)又称为共享密钥加密,对称密钥在加密和解密的过程中使用的密钥是相同的,常见的对称加密算法有DES、3DES、AES、RC5、RC6。对称密钥的优点是计算速度快,但是他也有缺点,密钥需要在通讯的两端共享,让彼此知道密钥是什么对方才能正确解密,如果所有客户端都共享同一个密钥,那么这个密钥就像万能钥匙一样,可以凭借一个密钥破解所有人的密文了,如果每个客户端与服务端单独维护一个密钥,那么服务端需要管理的密钥将是成千上万,这会给服务端带来噩梦。
  • 非对称密钥(public-key cryptography),又称为公开密钥加密,服务端会生成一对密钥,一个私钥保存在服务端,仅自己知道,另一个是公钥,公钥可以自由发布供任何人使用。客户端的明文通过公钥加密后的密文需要用私钥解密。非对称密钥在加密和解密的过程的使用的密钥是不同的密钥,加密和解密是不对称的,所以称之为非对称加密。与对称密钥加密相比,非对称加密无需在客户端和服务端之间共享密钥,只要私钥不发给任何用户,即使公钥在网上被截获,也无法被解密,仅有被窃取的公钥是没有任何用处的。常见的非对称加密有RSA。

 

TLS

刚开始听到TLS的时候,你可能还不太熟悉,但是说起SSL你可能就觉得好耳熟了。其实TLS就是从SSL发展而来的,只是SSL发展到3.0版本后改成了TLS

TLS主要提供三个基本服务:

  • 加密
  • 身份验证,也可以叫证书验证吧~
  • 消息完整性校验

我们再看一遍客户端和服务端之间的加密机制:

TLS协议是基于TCP协议之上的,图中第一个蓝色往返是TCP的握手过程,之后两次绿色的往返,我们可以叫做TLS的握手。握手过程如下:

  1. client1TLS版本号+所支持加密套件列表+希望使用的TLS选项
  2. Server1:选择一个客户端的加密套件+自己的公钥+自己的证书+希望使用的TLS选项+(要求客户端证书)
  3. Client2:(自己的证书)+使用服务器公钥和协商的加密套件加密一个对称秘钥(自己生成的一个随机值)
  4. Server2:使用私钥解密出对称秘钥(随机值)后,发送加密的Finish消息,表明完成握手

经过这几次握手成功后,客户端和服务端之间通信的加密算法和所需要的密钥也就确定下来了,之后双方的通信都可以使用对称加密算法加密了。

 

证书机制/证书验证

TLS中,我们需要证书来保证你所访问的服务器是真实的,可信的。

看这张图我们来讨论下证书的验证过程。

  1. 客户端获取到了站点证书,拿到了站点的公钥;
  2. 要验证站点可信后,才能使用其公钥,因此客户端找到其站点证书颁发者的信息;
  3. 站点证书的颁发者验证了服务端站点是可信的,但客户端依然不清楚该颁发者是否可信;
  4. 再往上回溯,找到了认证了中间证书商的源头证书颁发者。由于源头的证书颁发者非常少,我们浏览器之前就认识了,因此可以认为根证书颁发者是可信的;
  5. 一路倒推,证书颁发者可信,那么它所颁发的所有站点也是可信的,最终确定了我们所访问的服务端是可信的;
  6. 客户端使用证书中的公钥,继续完成TLS的握手过程。

那么,客户端是如何验证某个证书的有效性,或者验证策略是怎样的?

证书颁发者一般提供两种方式来验证证书的有效性:CRLOCSP

CRL

CRL(Certificate Revocation List)即证书撤销名单。证书颁发者会提供一份已经失效证书的名单,供浏览器验证证书使用。当然这份名单是巨长无比的,浏览器不可能每次TLS都去下载,所以常用的做法是浏览器会缓存这份名单,定期做后台更新。这样虽然后台更新存在时间间隔,证书失效不实时,但一般也OK。

OCSP

OCSP(Online Certificate StatusProtocol)即在线证书状态协议。除了离线文件,证书颁发者也会提供实时的查询接口,查询某个特定证书目前是否有效。实时查询的问题在于浏览器需要等待这个查询结束才能继续TLS握手,延迟会更大。

以上是站点在证书颁发者的角度说明会提供的两种判断方式,实际情况下浏览器究竟会选择哪种方式判断,每个浏览器都会有自己的实现。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值