asp.net-core - “CspKeyContainerInfo”需要 Windows 加密 API (CAPI),此平台上不可用
问题描述
我已将我的项目从 v2.1 升级到 asp.net core v2.2,一切正常工作。在下面显示的代码中,我正在尝试使用 IdentityServer4(v2.3.2) 初始化 RSA 密钥,而尝试获取令牌时出现以下错误。
try
{
var rsaProvider = new RSACryptoServiceProvider(2048);
var rsaParametersPrivate =
RsaExtensions.RsaParametersFromXmlFile(Configuration.GetSection("JwtSettings:rsaPrivateKeyXml")
.Value);
rsaProvider.ImportParameters(rsaParametersPrivate);
var securityKey = new RsaSecurityKey(rsaProvider);
_signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.RsaSha256);
_logger.LogInformation("InitializeRsaKey() successfully executed.");
}
catch (Exception ex)
{
var exception = new Exception("Identity Server RSA Key initialization failed. " + ex);
_logger.LogError(exception, "InitializeRsaKey() method failed.");
throw exception;
}
'CspKeyContainerInfo' 需要 Windows 加密 API (CAPI),此平台上不可用。错误。
此外,我的项目在 CentOS 机器上运行,同时我在 Windows 10 上开发我的项目。所以,我知道 Windows 中存在的东西在 Linux 上丢失了。为了解决这个问题,任何帮助和建议表示赞赏。
解决方案
我挖掘了一些 github 问题,发现仅在 Windows 上支持RSACryptoServiceProvider()
intheritsICspAsymmetricAlgorithm
和此类。有关详细信息,请查看此处。为了解决这个问题,我已经替换了var rsaProvider = new RSACryptoServiceProvider(2048);
line ,var rsaProvider = RSA.Create(2048);
它在 CentOS 上与 .NET Core v2.2 一起工作得很好。希望这可以帮助那些有同样问题的人。
推荐阅读
- css - css网格两侧不寻常的空白
- inventory - Odoo 13:在过去的日期发布库存估价
- entity-framework-core - Azure 数据库在 localhost 上工作,但在与 azure 服务应用程序一起使用时不能
- python - 在 Python 中修改 txt 文件行的最佳方法是什么
- vim - VIM 中的 grep 在 vim 中显示结果之前打开带有结果的终端
- r - 使用 group_by 维护时间序列的顺序
- hadoop - Impala 查询以获取下一个日期
- jtapi - JTAPI - 如何拦截来自 CUCM 的呼叫
- angular - Angular 8 HTTP Post 请求失败 404 错误
- c# - 使用 NotFound() 时从 .net core api 返回 json