代码之家  ›  专栏  ›  技术社区  ›  Hasan

“cspkeyContainerInfo”需要Windows Cryptographic API(capi),此平台上不可用。

  •  1
  • Hasan  · 技术社区  · 6 年前

    我已经将我的项目从2.1版升级到了ASP.NET Core 2.2版,并且所有功能都正常工作。在下面显示的代码中,我尝试用IdentityServer4(2.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 Cryptographic API(capi),此平台上不可用。错误。

    另外,我的项目在CentOS机器上运行,同时我在Windows10上开发我的项目。所以,我知道Linux上缺少Windows中的一些东西。为了解决这个问题,我们欢迎任何帮助和建议。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Hasan    6 年前

    我发现了一些Github问题 RSACryptoServiceProvider() 英特尔 ICspAsymmetricAlgorithm 而且这个类只在Windows上受支持。有关详细信息,请查看 here . 为了解决我更换的问题 var rsaProvider = new RSACryptoServiceProvider(2048); 用线 var rsaProvider = RSA.Create(2048); 在CentOS上,它与.NET核心2.2版配合得很好。希望这能帮助那些有同样问题的人。