https通信流程

https概念:
https(Hypertext Transfer protocol over Secure Socket Layer),是以安全为目标的http通道(俗话说就是加密的http),其实就是在http下面加入ssl层;
ssl协议位于tcp/ip协议和应用层协议之间(具体流程:如图)

ssl加密要涉及到第三方权威的ca机构颁发的数字证书(数字证书内容包括:颁发者,使用者,有效期,使用者公钥信息,数字指纹<用一种加密算法加密前面所有的信息>),ca要使用自己的公私钥,加密数字指纹(加密生成的就是数字签名)。

什么是数字证书

数字证书是一种权威性的电子文档。它提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。可以直接在浏览器中导出相关证书,即可直观的查看证书内容。

数字证书申请

服务端自己生成公私钥对,私钥自己留下,公钥给ca认证中心,申请ca的数字证书,ca会认真地核实申请者的信息,真实可信随后颁发数字证书,颁发的数字证书包括:颁发者、使用者、有效期限、使用者公钥、数字指纹(对以上内容使用哈希算法 (e.g.:SHA1,SHA-256,MD5,etc.)得到一段数字摘要)、数字指纹加密算法、数字签名(CA再用自己的私钥对该指纹加密,附在数字证书的后面一起颁发给申请者)等信息。

https通信原理

客户端(浏览器)访问服务端https加解密过程
1、客户端发送请求给服务端,服务端产生公私钥,将数字证书(包括server端的公钥)发送给客户端,
2、客户端使用的浏览器解密服务端(被访问的https网站上)发来了的ca证书;(浏览器都会内置权威ca的根证书<也就是ca自己给自己颁布的证书>,客户端使用根证书中记录的根ca的公钥,来解密服务端的ca证书)
3、解密ca颁发的数字证书,判断数字证书是否权威(可以判断该数字证书是否有权威的ca机构颁发,解密正常则是权威ca,反之异然)
4、可以判断出证书内容是否被篡改(使用已经解密的相关信息,使用与证书中相同的加密方式,加密证书内容,将加密值与证书后面的数字指纹比对);
5、检验一切ok,客户端浏览器则根据证书中的内容(有效期等等)进行检测,通过之后,浏览器从证书中获取到的公钥信息,则就是与服务器通信的公钥,之后进行加密通信(使用server端的公钥解密server端返回的消息)。

服务端到客户端过程
1、接收到来自信任的客户端使用server端的公钥,发来的加密请求消息(包括请求信息、客户端解密公钥);
2、服务端使用自己的密钥解密发来的请求信息(可以获取到客户端的加密公钥),
3、服务端使用获取到的客户端公钥加密返回信息,给客户端,客户端使用私钥解密显示到客户端浏览器上。

https存在的安全问题

 中间人劫持攻击

大体流程如下:

SSL劫持攻击即SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,

1、首先需要先将自己接入到客户端和目标网站之间;2、在传输过程中伪造服务器的证书,将服务端的公钥替换成自己的公钥,就这样,中间人就可以得到明文传输带Key1、Key2和Pre-Master-Key,从而窃取客户端和服务端的通信数据;中间人劫持攻击的关键在于伪造的证书必须由客户端用户所信任,否则利用不会成功。对于客户端来说,如果中间人伪造了证书,在校验证书过程中会提示证书错误,由用户选择继续操作还是返回,由于大多数用户的安全意识不强,会选择继续操作,此时,中间人就可以获取浏览器和服务器之间的通信数据。

Q&A

Q1、在https通信过程中,第三方权威ca机构会不会被攻克利用?

A:按道理来说如果ca机构被黑客利用,那么我们的信息就变得不安全,但是证书认证中心(CA)是基于国际互联网平台建立的一个公正,权威,可信赖的第三方组织机构,为什么这么说呢?实际上每个CA认证中心/数字证书所有人,他们都有一个数字证书,和属于自己的RSA公钥和密钥,这些是他们的父CA认证中心给他们颁发的(先了解一下现在互联网上ca机构的组成,由一个根ca授权二级ca,二级ca又可以授权三级ca...),所以每次都需要使用父ca颁发证书中的公钥加密子ca的证书内容和证书上的指纹比较哈希值判断是否合法(也就是证明子ca机构是否合法),由于一个数字证书基于上层的数字证书作验证,那上层的数字证书又是否合法呢??这就会出现一直递归上去的现象,事实也是这样的,验证一个证书是否合法,需要验证到他的最顶层的根证书是否合法!这里肯定又有人会问,那么最顶层的CA认证中心如何证明它的合法性呢?.......呵~这就是为什么FireFox要预先把一些最顶层(这里的"最顶层"和"根"是同一个概念)的CA认证中心的证书加入到权威信任列表中了,因为,最顶层CA认证中心没有办法证明,所以,最顶层的CA认证中心是总是受信任的!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值