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
第二条命令需要输入导出密码需要记录下来。 成功后结构如下图
- pfx:数字证书
- cer:验签公钥
- key:签名私钥
使用证书
把证书导入Identity项目目录中。 (如果需要在本地debug需要在debug目录下也放入一份)
在Appsetting.json 配置文件中添加配置
密码就是之前生成设置的导出密码。
在Starup.cs中ConfigureServices方法中配置
使用密钥生成token
在jwt.io 中使用公钥验证一下签名是否通过。
总结
在测试环境中一般多使用临时证书来生成token,但是在生成环境中应该使用固定的证书去生成token,保证token在时效性内不会失效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程