HTTPS

基本流程

客户端(如浏览器)先发起一个 HTTPS 请求,服务端响应这个请求,并发送给客户端 TA 的证书。浏览器检查 CA 证书是否合法。不合法浏览器会给出警告。合法则浏览器生成一个随机数,并用 CA 证书里服务端的公钥加密随机数。接着浏览器将用公钥加密后的随机数传给服务端,服务端用对应的私钥解密加密后的随机数,得到随机数。接下来服务端通过随机数对接下来的通信数据进行对称加密,并把加密后的数据传给客户端。之后的内容都通过对称加密传输。客户端有随机数,得到加密后的数据可以解密。

细节

建立连接具体细节

先是 TCP 3 次握手,然后客户端再发一个 Client Hello 的包,然后服务端响应一个 Server Hello,接着再给客户端发送证书。

在 Client Hello 包里,会告知使用的 TLS 版本,一个随机数,支持的加密套件。

Server Hello 里有:选中的加密套件。

接着服务端一般会发送给客户端好几个证书。

CA 证书

认证机构用自己的私钥对

  1. 证书包含?

    颁发机构信息

    服务端公钥

    公司信息

    域名

    有效期

    指纹

  2. 证书验证链

非对称加密

对称加密

前向安全性

TLS (Transport Layer Security)传输层安全性协议

SSL(Secure Sockets Layer)安全套接层

疑问

降级

HTTPS 的 URL 是加密的吗?

非浏览器等客户端会如何“告警”?

如 SSH 需要手动验证签名是否正确。

告警后仍访问,数据会加密吗?

参考

再谈HTTPS

HTTPS 原理分析——带着疑问层层深入 | leapMie