zoukankan      html  css  js  c++  java
  • IdentityServer使用ssl证书生成token

    前言

    如果在开发环境中使用临时证书,在Identity服务重启后之前所有token都会验签失败,所以在开发环境中一般使用固定的证书来保证Identity重启或负载的时候token能够验签通过。

    RSA加密

    RSA是一种公钥密码算法,和普通的算法不一样,普通的加密一般使用密钥生成规固定密文,前端如果需要验证密文需要和服务端共享密钥。如果密钥泄露很容易就能伪造密文,RSA加密方式比较特殊,它有两个密钥,公钥(publickey),私钥(privatekey),使用私钥来生成签名,公钥来验证签名,这样私钥只有服务端拥有,客户端可以使用公钥进行验签。

    生成证书

    mac os下使用终端执行以下两条命令

    openssl req -newkey rsa:2048 -nodes -keyout idsrv4.key -x509 -days 365 -out idsrv4.cer

    openssl pkcs12 -export -in idsrv4.cer -inkey idsrv4.key -out idsrv4.pfx

    第二条命令需要输入导出密码需要记录下来。 成功后结构如下图

    20200401103837

    • pfx:数字证书
    • cer:验签公钥
    • key:签名私钥

    使用证书

    把证书导入Identity项目目录中。 (如果需要在本地debug需要在debug目录下也放入一份)

    20200401104024

    在Appsetting.json 配置文件中添加配置
    20200401105339

    密码就是之前生成设置的导出密码。

    在Starup.cs中ConfigureServices方法中配置

    20200401104752

    使用密钥生成token
    20200401110238

    jwt.io 中使用公钥验证一下签名是否通过。

    20200401110641

    总结

    在测试环境中一般多使用临时证书来生成token,但是在生成环境中应该使用固定的证书去生成token,保证token在时效性内不会失效。

  • 相关阅读:
    nginx和tomcat访问图片和静态页面的配置方法
    centos7上mysql5.6版本主从复制
    centos7上编译安装mysql5.6
    js去除空格
    屏蔽F1~F12的快捷键的js函数
    js屏蔽浏览器(IE和FireFox)的刷新和右键等功能
    禁止选中页面内容-兼容ie、firefox、chrome
    js获取网页上选中的部分,包含html代码
    一个账号只能在一个地方登陆一次
    c#创建window服务
  • 原文地址:https://www.cnblogs.com/linhuiy/p/12611255.html
Copyright © 2011-2022 走看看