Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTPS #29

Open
Ben-yby opened this issue Dec 25, 2020 · 0 comments
Open

HTTPS #29

Ben-yby opened this issue Dec 25, 2020 · 0 comments

Comments

@Ben-yby
Copy link
Owner

Ben-yby commented Dec 25, 2020

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参考链接

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant