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协议个人学习总结

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