System.Security.Cryptography.CryptographicException: keyset does not exist
This question is old but for someone looking for the solution while continuing to use Encrypt
and Decrypt
here is how I manage to solve this error:
The base is my certificate have been installed the wrong way by double-clicking the .pfx
file and selecting the store.
The wrong way to install the certificate
1. Double click the certificate:
2. The wizard opens, click in the next button:
3. The wizard show the certificates location, click in the next button:
4. Enter the password then click next:
5. Select the store then click next:
6. The wizard show the certificate information, click in Finish button
7. Succes dialog is showed:
So at this point I had the error "Keyset does not exist".
To solve that I proceeded this way (the correct way)
1. Execute Microsoft Management Console (mmc.exe):
2. A blank MMC instance showed:
3. Click in File->Add/Remove Snap-in...
4. Select certificate snap-in an click in Add button:
5. Select Computer account then click in Next button:
6. Select Local computer then click in Finish button:
7. The certificate snap-in is now added, click in OK button:
8. Select the personal store, then right click and select Import:
9. Browse the certificate, and click next:
10. Enter the password, then click in Next button:
11. Automatically select the certificate store:
12. The certificate information shows:
13. Success dialog message shows:
14. Refresh the MMConsole to show the certificate:
15. Right click on the certificate, then click in Manage Private Keys...:
16. Add the pool identity or the IIS user in my case I added IIS_IUSRS:
17. The user has been added, click on OK button:
And it is finished the keyset does exist now!!
The application might be trying to write to the following folder path: C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
If your application is using impersonation or using the IUSR_MACHINENAME user, then configure the MachineKeys folder sercurities and give the user Read & Execute, List Folder Contents, Read, Write. If that doesn't work, try giving the Everyone user the same permissions.