HTTP SSL TCP TLS 说的啥
TCP 建立连接过程
HTTPS 的连接建立过程
HTTPS 是啥
HTTP 是明文传输,意味着端到端之间的任意节点都知道内容是消息传输内容是啥,这些节点可以是 路由器,代理等。
HTTPS 就是来解决这个问题的,以安全为目的的 HTTP 通道,全称是 Hyper Text Transfer Protocol
SSL TLS 是啥
SSL (secure Sockets Layer 安全套接字)
TLS(Transport Layer security, TLS) 是为了网络通信提供安全与数据弯针行的一种安全协议。TLS/SSL 在传输网络层连接进行加密。TLS/SSL 是安全传输层协议 Transporter Layer Security 是介于 TCP 和 Http 之间的一层安全协议, 不影响原有的 TCP 协议和 Http 协议。
身份验证 CA 和证书之间的关系
- 服务方S向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
- CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
- 如信息审核通过,CA会向申请者签发认证文件-证书;
- 证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;
- 签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名;
- 客户端 C 向服务器 S 发出请求时,S 返回证书文件;
- 客户端 C读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
- 客户端然后验证证书相关的域名信息、有效时间等信息;
- 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。
需要注意如下:
- 申请证书不需要提供私钥,确保私钥永远只能服务器掌握;
- 证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;
- 内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书(为什么说"部署自签SSL证书非常不安全")
- 证书=公钥+申请者与颁发者信息+签名;
HTTP 单向认证
单向认证是指:客户端连接到某个域名或者 IP 时 ,客户端协议验证服务器的身份。服务器的身份一般是通过证书认证的,服务器的整数,一般都是通过权威的 CA 机构进行签名,客户端收到服务器证书后,获取对应的 CA 机构的证书,并使用 CA 证书进行解密。
身份认证过程
连接过程
HTTPS 双向认证
https 双向认证指除了客户端需要验证服务器之外,服务器也需要验证客户端