目录
HTTPS = HTTP(80端口) + SSL/TLS协议(传输层,443端口)
1.摘要算法(散列函数 Hash Function):验证信息的完整性,不可逆
应用:yarn/npm certificate has expiredHTTPS 证书过期
2.2客户端用密钥交换算法(如 RSA 或 ECDHE)生成的随机对称秘钥,作为协商的会话密钥
2.3 RSA :客户端用公钥加密会话密钥,服务端用私钥解密该预主密钥(pre-master secret)
3.4. 服务端用会话密钥加密/解密数据,客户端用会话密钥解密/加密数据
B.通过session ticket:包含对话秘钥和加密方法的加密
2.客户端:私钥 签名 随机数 或 特定挑战(challenge)
4.通常使用 Diffie-Hellman共同生成一个会话秘钥
HTTPS = HTTP(80端口) + SSL/TLS协议(传输层,443端口)
用SSL/TLS对数据进行加密和解密
SSL的全称是Secure Sockets Layer,即安全 套接 层协议
TLS的全称是Transport Layer Security,即安全 传输 层协议
密文传输:SSL的后续版本TLS
TLS1.2握手
1.摘要算法(散列函数 Hash Function):验证信息的完整性,不可逆
用散列/哈希函数得到摘要/哈希值
MD5: 128位散列值 (要被淘汰了)
SHA-1: 160位散列值
SHA-256: 产出256位的散列值
第三方认证
引入场景:中间人篡改数据和公钥
引入场景:中间人篡改证书
1.1数字签名:保证数据不被篡改
一般收发双方会约定好签名串的需要包含哪些内容。
如微信支付规定包含: HTTP请求方法、 URL、 请求时间戳、 请求随机串、 请求报文主体
- 发送方A散列处理(不可逆)签名串(固定信息),得到
摘要
HashA
私钥加密摘要得到签名
,发送给接收方B- 接收方B使用公钥验证签名,得到摘要
HashA
- 接收方B根据双方规定的构造签名串的方法,按照1的步骤生成新的摘要
HashB
- 比较哈希值
HashA。HashB
是否一样,如果一样,则证明数据没有被篡改(签名串包含了请求报文主体(传输的数据),请求体改了则摘要会变).
1.2安全证书:保证公钥不被篡改
包含公钥、域名、有效期、数字签名(第三方机构私钥生成)
存于服务器端,可下载
- 浏览器安装后会本地自带 权威第三方机构公钥,对数字签名进行解密,拿到HashA
- 使用数字证书中的摘要算法计算一遍数字证书相关内容,生成摘要
HashB,比对
证书机构(CA: Certification Authority)的权威:
证书链(上层证书给下层证书认证)+系统自带自签根证书
证书一个一层套一层的链式关系,
上层证书给下层证书颁发证书和数字签名,下层证书找上层证书认证。
最后认证到根证书,最高层的根证书是自签的(自己给自己颁发证书)。
一般微软等公司会根据一些权威安全机构的评估,选取一些信誉很好,并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认就安装在操作系统里面了。
已安装的信任证书:
windows:win+R -> 输入certmgr.msc.
mac:钥匙串中证书
应用:yarn/npm certificate has expiredHTTPS 证书过期
a.淘宝镜像过期
b.镜像源不符合SSL安全套接协议