Skip to content

HTTPS #29

Description

@Ben-yby

HTTPS是什么

HTTPS是在HTTP通信接口部分用SSL和TLS协议代替,并对传输数据进行加密,是HTTP协议的安全版。

HTTPS的作用

  • 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
  • 对网站服务器进行真实身份认证。

为什么需要HTTPS

在HTTP协议中有可能存在信息窃取或身份伪装等安全问题。使用HTTPS通信机制可以有效地防止这些问题,接下来,我们先来了解下 HTTP协议存在的哪些问题:

  • 通信使用明文(不加密),内容可能被窃听
  • 无法证明报文的完整性,所以可能遭篡改
  • 不验证通信方的身份,因此有可能遭遇伪装

HTTPS的工作流程

image

  1. 客户端发起一个HTTPS(比如https://juejin.im/user/4283353031252967)的请求,根据RFC2818的规定,客户端t知道需要连接服务端的443(默认)端口。
  2. 服务端把事先配置好的公钥证书(public key certificate)返回给客户端。
  3. Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配客户端请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
  4. 客户端使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给服务端。
  5. 服务端使用自己的私钥(private key)解密这个消息,得到对称密钥。至此,客户端和服务端双方都持有了相同的对称密钥。
  6. 服务端使用对称密钥加密“明文内容A”,发送给客户端。
  7. 客户端使用对称密钥解密响应的密文,得到“明文内容A”。
  8. 客户端再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后服务端使用对称密钥解密密文,得到“明文内容B”。

HTTP 与 HTTPS 的区别

  • HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
  • HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;
  • HTTPS需要用到SSL证书,而HTTP不用;
  • HTTPS标准端口443,HTTP标准端口80;
  • HTTPS基于传输层(TSL(Transport Layer Security)传输层安全性协议),HTTP基于应用层;
  • HTTPS在浏览器显示安全锁,HTTP没有显示;

HTTPS参考链接

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions