HTTPS协议个人学习总结

HTTPS

  • 什么是HTTPS
    • http和https的区别
    • https特点
    • SSL和TSL
    • 对称和非对称加密
    • 证书
      • 什么是CA
  • HTTPS大致流程

什么是HTTPS

HTTPS 指的是超文本传输安全协议(Hypertext Transfer Protocol Secure)。由HTTP加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输,实现互联网传输安全保护。
SSL证书是数字证书的一种,因为配置在服务器上也称为服务器SSL证书。是遵守SSL协议,由受信任的数字证书颁发机构CA(如景安)在验证服务器身份后颁发的一种数字证书。
用户通过HTTP协议访问网站时,浏览器和服务器之间是明文传输。服务器安装SSL证书后,使用https鸡爱慕协议访问网站,可激活客户端浏览器到网站服务器之间的“SSL加密通道”(SSL协议)

http和https的区别

  1. HTTPS是加密传输协议,HTTP是名文传输协议
  2. HTTPS需要用到SSL证书,而HTTP不用
  3. HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO
  4. HTTPS标准端口443,HTTP标准端口80
  5. HTTPS基于传输层,HTTP基于应用层
  6. HTTPS在浏览器显示绿色安全锁,HTTP没有显示

https特点

  1. 防止被窃听—加密
    加密分为两种,首先是对通信的加密,HTTP协议中没有加密机制,但是可以通过外挂的方式对通信进行加密,通过和SSL或TLS的组合使用,可以加密HTTP的通信内容。其次是对内容的加密,在这种情况下,客户端和服务器需要对发送的内容进行加密解密操作。另外,由于该方法不像SSL和TLS一样对整个通信线路进行加密,虽然内容不会被窃听,但是可能会被篡改。此外,加密分为对称加密和非对称加密。HTTPS当然是使用最复杂的混合加密机制(对称加密和非对称加密一起使用)(SSL、TLS、对称和非对称加密稍后会介绍)。
  2. 防止遭遇伪装—证书
    借助刚刚提到的SSL,它不仅提供加密处理,还提供了用于确认通信双方身份的东西—证书。证书是由大家都信任的第三方机构颁发的,用来证明服务器或者客户端是实际存在的。
  3. 防止被篡改—摘要
    借助与SSL提供的认证、加密和摘要功能,这些功能组合起来可以有效检测传输内容的完整性。当然,HTTP本身就带有MD5和SHA-1等散列值校验的方法,但是并不可靠。

SSL和TSL

  • TLS是以SSL为原型开发的协议,有时会统一称为SSL协议。
    HTTPS并不是应用层的一种新协议,只是普通HTTP协议在接口部分使用SSL(Secure Socket Layer,安全套接层)和TLS(Transport Layer Security,安全传输层)协议而已。
  • 通常,HTTP直接与tcp协议进行通信,当使用SSL时,则HTTP先和SSL通信,再由SSL和TCP进行通信,SSL是独立于HTTP的协议,所以除了HTTP以外,其他应用层协议也可以和SSL配合使用(如SMTP和Telnet)。

对称和非对称加密

这里的对称描述的是加解密的密钥,如果加密和解密密钥相同,则是对称加密,反之则是非对称加密。下面说一下两种加密方式的优缺点(只是针对用在HTTPS协议方面的优缺点)

  1. 对称加密和非对称加密优缺点
    对称加密因为加解密使用的是同一密钥,相对非对称加解密使用不同密钥,对称加密对CPU资源的消耗会更少,速度会更快,更适合大量数据的加密。但是对称加密需要将密钥发送给通信的另一方,如果密钥在传输过程中被截获,那就白忙活了。所以这时候就需要非对称加密发挥优势了,非对称加密可以用来传输对称加密的密钥!
  2. HTTPS混合加密机制
    HTTPS当然使用复杂的混合加密机制(对称加密和非对称加密一起使用)。其实对称加密已经够用,只是有一个问题,对称加密的密钥如何发送给通信的另一方。我们把信息装进一个带锁的箱子了,并把箱子发送给另一方,对方如何打开箱子才是问题的关键。这一过程也叫做密钥交换。混合加密机制就是在密钥交换阶段使用非对称加密方式,之后使用对称加密方式进行传输。

证书

即使使用上述的非对称加密方式进行加密,还是有一个问题,那就是无法确认公开的密钥就是货真价实的通信对方的公开密钥。有可能公钥在传输过程中已经被攻击者替换掉了。
为了解决这个问题,证书应运而生。证书也叫公开密钥证书,是由数字证书认证机构(CA,Certificate Authority)和其相关机构颁发的。以下是数字证书认证机构的业务流程:

  1. 服务器的运营人员向数字证书认证机构提出公钥申请。
  2. 认证机构在判明申请者的身份之后,对已申请的公钥做数字签名(非对称加密使用私钥进行加密叫数字签名)。
  3. 认证机构分配这个已签名的公钥,并将该公钥放入公钥证书后绑定在一起。
  4. 服务器将证书发送给客户端,客户端使用认证机构的公钥解开证书,进行验证。

什么是CA

数字证书认证机构(Certificate Authority,缩写为CA)。我们知道,服务器不能将非对称加密产生的公钥直接告诉你,因为中间人可能截获这个公钥进行解密篡改,加密,传输。所以想一个下下策了,成立一个官方组织,由它来作认定。服务器会将产生的公钥交给他,让他进行登记,他登记后会给我发一个证书,来证明我是我。证书中含有我的公钥内容,还包含一些其他信息,比如我是哪个公司的,域名是什么,谁给我的这个证书等等。本来我应该给你公钥的,现在变了,我给你发送一个我的证书,你拿着这个证书去找 CA 质问,这个证书是真的吗,CA 会匹配公钥和证书内的其他信息,看是否真的在他那儿注册过了,如果确认是真的,那就说明证书没被中间人篡改,那你就可以大胆的用证书中的公钥进行加密。当然,数字证书也可能被第三方截获,第三方也得到公钥信息,也可以解密服务器传来的信息,那么,我们让浏览器先设置对称加密的密码的,将密码用公钥加密,传输给服务器,第三方只有公钥,解不开密码,而服务器可以解开,之后就可以通过对称加密的方式进行通讯了,我们就可以安全的传输数据了,再也不怕中间人偷窥了。一般浏览器在操作系统中内置的一些顶级 CA 信息来验证对方证书的真实性,如果证书有问题,浏览器会发出提示。

HTTPS大致流程

  1. 请求由客户端发起。客户端发送Client Hello报文开始SSL通信。报文中包含了SSL的版本,加密组件等信息。
  2. 服务器收到请求会以Server Hello报文作为应答,报文内容和请求时差不多(经过筛选的)。
  3. 紧接着服务器再发送一条Certificate报文,报文中包含了证书。
  4. 服务器活还没干完,还需要发送Server Hello Done报文给客户端,表示SSL握手结束。
  5. 然后该客户端了,客户端会回应一个Client Key Exchange报文,报文包含用步骤3中公钥加密后的随机密码串。
  6. 接着客户端继续发送Cipher Spec报文,提示服务器,用步骤5的随机密码串作为密钥加密之后的通信。
  7. 然后客户端发送Finished报文,表示这次协商结束,是否成功还得看服务器能不能解密该报文。
  8. 服务器没问题,发送Change Cipher Spec报文。
  9. 服务器发送Finished。
  10. SSL连接完成,接下来使用HTTP进行通信。
  11. 最后由客户端断开连接。发送close_notify报文。

HTTPS协议个人学习总结_第1张图片

参考原文链接:
https://blog.csdn.net/caomage/article/details/95620549

你可能感兴趣的:(密码学)