IS4中如果token的类型是JWT,则需要使用RS256算法生成非对称签名,这意味着必须使用私钥来签名JWT token,并且必须使用对应的公钥来验证token签名,即验证token是否有效。使用RS256可以保证IS4服务端是JWT的唯一签名者,因为IS4服务端是唯一拥有私钥的一方,前提是私钥不会被泄露。所以我们需要一个证书为我们提供私钥和公钥。在开发环境可以利用IS4的AddDeveloperSigningCredential方法生成RSA文件,RSA文件为我们提供私钥和公钥,但是RSA文件不够安全,打开文件可以直接看到公钥和私钥,在生产环境我们一般会生成证书来提供私钥和公钥。
1、安装OpenSSL工具
下载地址:https://slproweb.com/products/Win32OpenSSL.html
找到并下载自己系统对应的即可。
2、找到OpenSSL安装目录,运行start.sh,打开openssl cmd。
3、创建私匙
openssl req -newkey rsa:2048 -nodes -keyout id4svr.key -x509 -days 3650 -out id4svr.cer
创建过程中会让你输入相关信息,随意就好。
4、生成证书
openssl pkcs12 -export -in id4svr.cer -inkey id4svr.key -out id4svr.pfx
生成过程中会让你输入密码,记录这个密码,会在id4中用到。
5、配置证书
将证书复制到项目中,然后设置生成时复制。
代码中使用生成的证书。
builder.AddSigningCredential(new X509Certificate2(Path.Combine(AppContext.BaseDirectory, "Cert/id4svr.pfx"), "证书密码"));
文章评论