登录&https 加密

文章发布时间:

最后更新时间:

(常见登录鉴权方案)[https://zhuanlan.zhihu.com/p/271768645] ## https原理 证书验证和数据传输阶段 HTTPS 在内容传输的加密上使用的是对称加密(快),非对称加密只作用在证书验证阶段。 ### 证书验证 基于RSA的tls连接 传两个随机数,传证书和公钥,公钥加密预主密钥传过去 ssl证书在cloudflare上买?

数据传输

分片,压缩,消息认证码(验证完整性的hash),加密

不是绝对安全:中间人完全替代服务器/客户端的位置 -> CA证书 抓包:客户端新增证书公钥 >抓包工具能够抓包的关键是客户端会往系统受信任的根证书列表中导入抓包工具生成的证书,而这个证书会被浏览器信任,也就是抓包工具给自己创建了一个认证中心 CA,客户端拿着中间人签发的证书去中间人自己的 CA 去认证,当然认为这个证书是有效的。

Next.js 实践总结 - 登录授权验证最佳方案

JWT(JSON Web Token)

由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

Header,Payload是JSON对象,要使用 Base64URL 算法转成字符串。Signature 部分是对前两部分的签名,防止数据篡改。三部分字符串要用. 隔开。

生成 Signature 需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256)。

可以使用openssl来生成一对私钥和公钥。(我的电脑上要在 C:{username} 里使用)

用Node.js中的 jsonwebtoken 库:

  • header自动生成

  • token = jwt.sign(payload, secret) 生成JWT

  • const decoded = jwt.verify(token, secret); 验证和解码JWT,返回一个payload