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

第 44 题:介绍 HTTPS 握手过程 #71

Closed
Moriarty02 opened this issue Mar 29, 2019 · 2 comments
Closed

第 44 题:介绍 HTTPS 握手过程 #71

Moriarty02 opened this issue Mar 29, 2019 · 2 comments

Comments

@Moriarty02
Copy link

Moriarty02 commented Mar 29, 2019

首先值得一提的是https是在http的基础上额外增加了ssl(tls),
三次握手是在tcp协议做的事,http(s)是tcp的上层协议
ssl密钥交换过程

  1. 客户端发送请求到服务端(443端口)
  2. 服务端首先得是支持https协议的才行,既有自己的CA证书(就是一堆公钥私钥)
  3. 服务端向客户端传输公钥等信息,包含了证书的颁发机构,公钥,版本,过期时间等信息
  4. 客户端拿到证书以后解析证书是否合法,这一步是浏览器做的,
  5. 不合法的会直接在地址栏提示危险或者不允许访问
  6. 合法会生成一个随机数然后使用公钥对随机数key进行加密(公钥加密的只能用服务端唯一私钥解密)得到key`
  7. 客户端传输加密的随机值(key`)给服务端
  8. 服务端拿到加密的随机数以后使用私钥对随机数解密得到随机数(key),然后使用随机数对数据加密后传输给客户端
  9. 客户端和服务端都拿到了key,之后的通信就是用key加密和解密
    附上程序员小灰的分享 漫画:什么是 HTTPS 协议?
@yygmind
Copy link
Contributor

yygmind commented Mar 29, 2019

已有issues,已第一条为准#70

@Iamlqyfly
Copy link

client 与 server 通过对称加密安全的传输数据过程

1.client 发起安全连接 https 请求
2.server 返回证书, client 验证证书正确,得到 server 的公钥
3.client 随机生成对称加密的密码,并使用 server 的公钥对随机密码加密后传输给 Server
4.server 通过私钥解密获取对称加密的密码

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

3 participants