发展 ``` --1995:网景公司推出SSL3.0协议 --1999:TLS1.0 --2006:TLS1.1 --2008: TLS1.2 --2018: TLS1.3 ``` `SSL`: Secure Sockets Layer `TLS`: Transport Layer Security `ISO/OSI`模型 ``` 应用层:HTTP协议 表示层:SSL协议在这里展开,在HTTP协议无感的情况下,对明文加密,包括握手、密钥交换、告警、对称加密 会话层: 传输层: 网路层: 数据链路层: 物理层 ``` `TLS`安全密码 ``` TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE:密钥交换,椭圆曲线加密算法,保证浏览器和服务器之间各自独立生成密钥,使用密钥加密数据 RSA:身份验证 密码:AES:算法+128:强度+GCM:模式 SHA256:MAC或PRE,摘要算法,把不定长度字符串生成不定长度的摘要 ``` 对称加密 ``` 使用同一个密钥进行加密或解密 优点是性能好 ``` 非对称加密 ``` 公钥+私钥 使用公钥加密,使用私钥解密 使用私钥加密,使用公钥解密 ``` 公信机构 ``` CA:公信机构 证书订阅人:服务器站点 --证书订阅人:发送CSR, request certificate issuance登记机构 --登记机构:发送request certificate issuane给CA --CA:发布公钥和私钥,公钥在证书里保存着,交给登记机构 --登记机构:把公钥和私钥交给证书订阅人 --订阅人:把证书部署到服务器 --浏览器:请求证书 --服务器:发布公钥证书给浏览器 --CA通过CRL服务器,或者OCSP响应判断证书是否有效 ``` 证书类型 ``` --域名验证,domain validated, DV证书,只要域名指向的IP是申请证书的服务器,实时获取 --组织验证,organization validated, OV证书,企业名称,需要几天时间, --扩展验证,extended validation,EV证书,在浏览器会显示公司名称 ``` 证书链。`Nginx`向浏览器发送证书时,发送站点的主证书,再发送二级证书。 ``` --根证书:被操作系统或浏览器内置 --二级证书 --主证书 ``` `TLS`通讯过程 ``` --四个目的 验证身份 达成安全套件共识 传递密钥 加密通讯 --具体过程 -浏览器:发送ClientHello, 告诉服务器支持的加密类型,随机数,SessionID,告诉浏览器哪个加密算法套件 -服务器:发送ServerHello, 告诉浏览器支持的加密算法套件 -服务器:把公钥证书发送给浏览器,包含证书链 -浏览器:验证证书 -服务器:ServerHelloDone,比如安全套件中的椭圆曲线算法,把相关参数发送给浏览器,服务器有自己的私钥,把公钥发送给浏览器 -浏览器:根据参数生成私钥,把公钥发送给服务器 -服务器和浏览器:使用公钥和密钥进行加密解密 ```