美文网首页
OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

作者: 静昕妈妈芦培培 | 来源:发表于2021-03-17 13:09 被阅读0次

    计算机网络上,OpenSSL是一个开放源代码软件包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

    不同操作系统对openssl的支持

    mac操作系统是自带openssl这个工具的
    window操作系统中,
    如果使用的是cmd,openssl工具是无法使用的的;解决办法:你可以在操作系统中单独安装openssl,然后配置环境变量
    而git base here自带了openssl工具,可以在git base中使用openssl工具

    使用openssl生成公钥私钥

    image.png

    结果:


    image.png image.png

    结果:


    image.png

    例:使用非对称加密颁发token和验证token

    const fs = require('fs')
    const path = require('path')
    const Koa = require('koa')
    const Router = require('koa-router')
    const jwt = require('jsonwebtoken')
    
    
    const app = new Koa()
    
    const testRouter = new Router()
    
    //获取私钥公钥
    //fs.readFileSync没有指定字符编码,返回的为buffer对象
    const PRIVATE_KEY = fs.readFileSync(path.resolve(__dirname,'./keys/private.key'))
    const PUBILC_KEY = fs.readFileSync(path.resolve(__dirname,'./keys/public.key'))
    // 登录接口
    testRouter.post('/test', (ctx, next) => {
        //下面时获取到的用户信息
        const user = {id: 110, name: 'why'}
    
        //获取token
        const token = jwt.sign(user, PRIVATE_KEY, {
            expiresIn: 10, //token过期时间,单位为s
            algorithm: "RS256", //非对称加密颁发token时需要指定算法
        } )
    
        //响应数据
        ctx.body = token
    })
    
    //验证接口
    testRouter.get('/demo', (ctx, next) => {
        //颁发token
        const authorization = ctx.headers.authorization
        const token = authorization.replace('Bearer ','')
        console.log(token)
    
        //验证token
        try{
            const result = jwt.verify(token, PUBILC_KEY, {
                algorithms: ["RS256"] //非对称加密验证token时需要指定通过哪种算法验证
            })
            ctx.body = result
        }catch(e) {
            ctx.boy = '无效的token'
        }
        
    })
    
    app.use(testRouter.routes())
    app.use(testRouter.allowedMethods())
    
    app.listen(8000, () => {
        console.log('服务器启动成功')
    })
    
    

    使用接口测试颁发token


    image.png

    使用接口测试验证token、


    image.png

    相关文章

      网友评论

          本文标题:OpenSSL生成私钥和公钥和使用非对称加密颁发验证token

          本文链接:https://www.haomeiwen.com/subject/slpscltx.html