首页 > Web开发 > 详细

ASP.NET Core+SPA+IdentityServer4部署时出现的Key Type

时间:2020-04-16 15:41:20      阅读:87      评论:0      收藏:0      [点我收藏+]

本文使用的是"Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="3.1.3",IdentityServer的其他实现方式可能与本文不同。

由于IdentityServer4需要使用RSA加密,所以需要一个证书。

证书如何做,参考这篇文章:IdentityServer4部署到服务器,配置证书问题,即OpenSSL自制RSA证书。

主要包括:

1、安装OpenSSL工具 ,官网下载地址:https://slproweb.com/products/Win32OpenSSL.html 

2、在CMD中执行以下命令

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

作者:昊志凌云
链接:https://www.jianshu.com/p/1b82f6d2644e
来源:简书
 
openssl pkcs12 -export -in cas.clientservice.cer -inkey cas.clientservice.key -out IS4.pfx
 
注意记住密码。
生成这个pfx文件之后,原文写配置到Startup.cs中,但是我在这里卡主了,还是提示Key Type错误。
 
 
后来在Stack Overflow 这个问题中找到了用file配置的办法:
"IdentityServer": {
    "Key": {
      "Type": "File",
      "FilePath": "C:\cert.pfx",
      "Password": "password123"
    }
  }
这个确实可用,但是感觉好奇怪,后面的 For Store 再联想到官方文档,突然有了思路。
 
"IdentityServer": {
  "Key": {
    "Type": "Store",
    "StoreName": "My",
    "StoreLocation": "CurrentUser",
    "Name": "CN=MyApplication"
  }
}

  这其实也是适用于windows系统的,证书安装后,会放在计算机中,正确配置上面的参数即可调取。

Type是固定的,使用Store。

StoreName就是证书逻辑存储名(存储区),一般默认安装会安装到My,对应“个人”。

StoreLocation是两种:(CurrentUser 或 LocalMachine),看你当时安装时候的选择了。

Name,官方解释是证书上的名称属性对应于证书的可分辨主题,到底是啥??其实就是前面制作证书时候你自己配置的那些公司等等的参数。

用以下代码(根据你自己的情况稍作调整)可以把Name列出,完全贴到Name配置中即可。

            X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);//获取本地计算机受信任的根证书的储存区
            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
            X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;//获取储存区上的所有证书
            //X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByIssuerName, "baiyi", false);//找到所有baiyi颁发的证书
            X509Certificate2Collection fcollection = (X509Certificate2Collection)collection;//找到所有本地的个人证书
            foreach (var item in collection)
            {
                Console.WriteLine(item.SubjectName.Name);
            }

 最后注意:

1、按照本文方案,只需要在appsettings.json中进行配置,不必在Startup.cs中配置,配置了也没用;

2、File和Store的方案使用其中一个即可,File方案应该是不需要安装(丢了咋办?)。

 

 

ASP.NET Core+SPA+IdentityServer4部署时出现的Key Type

原文:https://www.cnblogs.com/wzhao666/p/12712903.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!