apache Linux上的ASP.NET Core 6 ReactJS Web应用程序在IDX10634方面存在问题:无法创建签名提供程序

9cbw7uwe  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(108)

我已经将一个基于ASP.NET6ReactJS模板的ASP.NET6解决方案部署到了LinuxCentOS/Apache宿主环境中。
根据下面提供的错误消息,我似乎需要更改签名提供程序的算法,但我不知道如何准确地执行此操作。

System.NotSupportedException: IDX10634: Unable to create the SignatureProvider.
Algorithm: 'RS256', SecurityKey: 'Microsoft.IdentityModel.Tokens.X509SecurityKey, KeyId: 'xxxxxxxxxxxx', InternalId: 'xxxxxxx'.' is not supported. The list of supported algorithms is available here: https://aka.ms/IdentityModel/supported-algorithms

我发现了几个常见问题,指示使用ECDSA或类似的代替,但没有真实的的例子,如何确切地实现这在我的类型的解决方案与修改的例子在Program.cs或类似的。
我会很感激任何关于这方面的想法!
提前感谢!

3lxsmp7m

3lxsmp7m1#

您可以使用OpenSSL通过以下方式创建自己的ECDSA密钥:

#Create P256 ECDSA Private key
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -aes256 -out p256-private.pem

# Optionally, if you want to extract the public key:
openssl ec -in p256-private.pem -pubout -out p256-public.pe

# Create certificat file
openssl req -new -x509 -key p256-private-key.pem -days 365 -subj "/CN=MyP256Cert" -out p256-cert.crt

# Crete the PFX file
openssl req -new -x509 -key p256-private-key.pem -days 365 -subj "/CN=MyP256Cert" -out p256-cert.crt

然后,您可以使用以下命令在C#中加载它:

var ecdsaCert = new X509Certificate2("es256.pfx", "password");
SecurityKey ecdsaPrivateKey = new ECDsaSecurityKey(ecdsaCert.GetECDsaPrivateKey());

您可以使用以下代码将其添加到IdentityServer:

// Add ES256 (ECDSA using P-256 and SHA-256)
builder.AddSigningCredential(GetECDsaPrivateKey(p256Cert), IdentityServerConstants.ECDsaSigningAlgorithm.ES256);

相关问题