Skip to content

HTTPS #34

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

Open
LumiereXyloto opened this issue Dec 16, 2019 · 1 comment
Open

HTTPS #34

LumiereXyloto opened this issue Dec 16, 2019 · 1 comment

Comments

@LumiereXyloto
Copy link
Collaborator

HTTPS

HTTP、HTTPS区别

  • HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密
  • HTTP 的端口号是 80,HTTPS 是 443
  • HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费
  • HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

为什么HTTPS

  • 建立一个信息安全通道,来保证数据传输的安全
  • 确认网站的真实性,防止钓鱼网站

HTTPS原理

使用 RSA 的方法将加密算法的对称密钥发送过去,之后就可以使用使用这个密钥,利用对称密钥来通信了。就比如说我将钥匙放进了保险柜,然后将保险柜寄给对方。

中间人攻击

有一个问题就是在使用非对称密钥的时候,首先需要将公钥给对方,那么在这个过程中,安全是没有保障的,中间人可以拦截到公钥,就可以对拦截到的公钥进行篡改。

确认身份-数字证书

  1. 发送方将公钥和信息通过Hash算法生成消息摘要,再用CA的私钥对信息摘要进行加密生成数字签名。
  2. 数字签名和原始信息(包括公钥和信息)合在一起称为数字证书,只需将数字证书发送给对方就可以了。
  3. 对方在拿到数字证书之后,就用同样的Hash算法,对原始信息再次生成消息摘要,然后用CA的公钥对数字签名解密,得到CA创建的消息摘要,两者一比,就知道有没有人篡改了!

https://juejin.im/post/59e4c02151882578d02f4aca

HTTPS加密的是哪部分数据?可以被拦截吗,可以看到哪部分数据?

  • 加密的是发送方的公钥和个人信息利用Hash算法生成的摘要。用CA的私钥把这个摘要加密成了数字签名。然后发送方发送这个数字签名和原始的公钥和个人信息。
  • 被拦截后就可以看到公钥和个人信息。
  • 不知道写对没有,谨慎参考靴靴。
@Reaper622
Copy link
Member

简要补充一下HTTPS的握手过程

HTTPS 握手过程

  • 客户端向服务端发送一个随机数1,和自己支持的加密方法。
  • 服务端接收消息后,向客户端发送自己生产的随机数2,SSL证书,确定使用的加密方法。
  • 客户端读取证书信息,确认证书是未过期有效的,之后自己生产一个随机数3,并使用证书的公钥进行加密,发送给服务端。
  • 服务端使用自己本地的私钥解密获取客户端的随机数3
  • 客户端和服务端使用这三个随机数生成对话密钥「对称加密」,用来加密接下来的对话过程。

公钥和私钥的作用

握手之后的对话使用对话密钥,服务器的公钥和私钥只用于加密和解密对话密钥,没有其他的作用。因此在整个对话的过程中,服务器的公钥和私钥只会用到一次,此外服务器的公钥是存储在证书中的。

HTTPS握手过程,客户端如何验证证书的合法性

  • 校验证书的颁发机构是否受客户端信任。
  • 通过CRL或者OCSP的方式校验证书是否被吊销。
  • 对比系统时间,校验证书是否在有效期内。
  • 通过检验对方是否存在证书的私钥,判断证书的网站域名是否与证书颁发的域名一致。

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

No branches or pull requests

2 participants