目录
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共同生成一个会话秘钥
用SSL/TLS对数据进行加密和解密
SSL的全称是Secure Sockets Layer,即安全 套接 层协议
TLS的全称是Transport Layer Security,即安全 传输 层协议
用散列/哈希函数得到摘要/哈希值
MD5: 128位散列值 (要被淘汰了)
SHA-1: 160位散列值
SHA-256: 产出256位的散列值
一般收发双方会约定好签名串的需要包含哪些内容。
如微信支付规定包含: HTTP请求方法、 URL、 请求时间戳、 请求随机串、 请求报文主体
摘要
HashA
私钥加密摘要得到签名
,发送给接收方BHashA
HashB
HashA。HashB
是否一样,如果一样,则证明数据没有被篡改(签名串包含了请求报文主体(传输的数据),请求体改了则摘要会变).HashB,比对
证书机构(CA: Certification Authority)的权威:
证书链(上层证书给下层证书认证)+系统自带自签根证书
证书一个一层套一层的链式关系,
上层证书给下层证书颁发证书和数字签名,下层证书找上层证书认证。
最后认证到根证书,最高层的根证书是自签的(自己给自己颁发证书)。
一般微软等公司会根据一些权威安全机构的评估,选取一些信誉很好,并且通过一定的安全认证的证书发布机构,把这些证书发布机构的证书默认就安装在操作系统里面了。
已安装的信任证书:
windows:win+R -> 输入certmgr.msc.
mac:钥匙串中证书
a.淘宝镜像过期
b.镜像源不符合SSL安全套接协议
2.3 ECDHE:客户端和服务器通过椭圆曲线 Diffie-Hellman 交换来共同生成会话密钥。
目前所有的浏览器都支持这一种方法。
但是这种方法有一个缺点是,session ID 只能够存在一台服务器上,如果我们的请求通过负载平衡被转移到了其他的服务器上,那么就无法恢复对话。
session ticket 是服务器在上一次对话中发送给客户的,这个 ticket 是加密的,只有服务器能够解密,里面包含了本次会话的信息,比如对话秘钥和加密方法等。这样不管我们的请求是否转移到其他的服务器上,当服务器将 ticket 解密以后,就能够获取上次对话的信息,就不用重新生成对话秘钥了。
SSH(Secure Shell)是一种加密的网络协议,用于安全地远程登录服务器、传输数据和执行命令。
公钥加密来安全交换或生成对称会话密钥
对称加密来保护数据传输
使用哈希或MAC防篡改数据。
SSH 常用秘钥对
TLS 多用证书和公钥
ssh-keygen
命令
公钥在 ~/.ssh/authorized_keys
文件中,添加到远程服务器
私钥在 ~/.ssh/id_rsa
(默认名称)或其他自定义名称的文件中,保留在本地机器上。
RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,广泛用于加密和数字签名
无线公钥基础设施(Wireless Public Key Infrastructure,WPKI)的安全连接可能不需要输入