When I deploy my working ASP.NET CORE 2.2 app to my local IIS 10 it gives me the exception
Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Object already exists
   at Internal.NativeCrypto.CapiHelper.CreateCSP(CspParameters parameters, Boolean randomKeyContainer, SafeProvHandle& safeProvHandle)
   at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeProvHandle()
   at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeKeyHandle()
   at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize)
   at System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters parameters)
   at SamoletBot.Utilities.RSAHelper.GetRSAFromString(String pemstr) in D:\Projects\SamoletBot22\SamoletBot\SamoletBot.Utilities\RSAHelper.cs:line 23
Here is the relevant code:
   CspParameters cspParameters = new CspParameters();
   cspParameters.KeyContainerName = "TheContainer";
   cspParameters.Flags = CspProviderFlags.UseMachineKeyStore;
   RSACryptoServiceProvider rsaKey;
   rsaKey = new RSACryptoServiceProvider(cspParameters);
The exception is thrown on the last line
After reading I concluded that this happens because of RSA container permissions and I saw a couple of answers which use this in order to grant permissions to every user.
CryptoKeyAccessRule rule = new CryptoKeyAccessRule("everyone", CryptoKeyRights.FullControl, AccessControlType.Allow);
The problem is that CryptoKeyAccessRule could not be found. I have imported using System.Security.AccessControl. Looking at Microsoft docs  I saw that this is only for .NET Framework.
What is the alternative way to create a "shared" RSA container in .NET Core 2.2?
I am not sure this will fulfil your requirement. But above libs are not included in .net standard/core apis.
You may need to Switch to below and do a workaround
https://www.nuget.org/packages/System.IO.FileSystem.AccessControl/
System.IO.FileSystem.AccessControl
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With