I am attempting to encrypt connection string values in the Web.Config file for an ASP.NET 2.0 web application, following the procedure described on MSDN. Using the RsaProtectedC
Be careful that the name of the element to encrypt is case sensitive. So you should use "connectionStrings" not "connectionstrings" or "ConnectionStrings".
From your description, you're encountering some problems about encypting web.config via exportable RSA provider, correct?
According to the RSA encryption reference, I've performed some local tests, the normal process of encrypting web.config section via RSA provider and move to other machine is as below:
====================== Step 1
Create a machine-level RSA key container: aspnet_regiis -pc "MyTestKeys" -exp
Step 2
Grant Read Access to the RSA Encryption Key:
aspnet_regiis -pa "MyTestKeys" "NT AUTHORITY\NETWORK SERVICE"
Step 3
Encrypt the config file: aspnet_regiis -pef "connectionStrings" "physical path of the web site folder" -prov MyRSAProvider
export the container and import it back to other machine using the following steps
Step 4
Export the machine-level RSA key container: aspnet_regiis -px "MyTestKeys" "c:\Config-Key.xml" -pri
Step 5
Copy Config-Key.xml to c:\ on 2nd server
Step 6
Import the the machine-level RSA key container on the 2nd server: aspnet_regiis -pi "MyTestKeys" "c:\Config-Key.xml"
Step 7
Grant Read Access to the RSA Encryption Key: aspnet_regiis -pa "MyTestKeys" "NT AUTHORITY\NETWORK SERVICE"
Step 8
Copy encrypted web.config to 2nd server
========================
Based on the steps you mentioned, I think most of the process you've followed should be correct. So far I'd like to suggest you check the following things:
========encrypt config section=======
type="System.Configuration.RsaProtectedConfigurationProvider,System.Configur ation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
You can check them to see whether the problem is due to some of them.
Sincerely, Sanjay Manju suman
The RsaProtectedConfigurationProvider uses the machine account or the user account to encrypt the keys and save them in a file which called "key container", which usually saved in C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA. And the ASP.NET worker process identity (ASPNET user in XP/2000 or Network Service in case of 2003) should have access to these files to be able to decrypt it or you would get this error message.
Please check this link for more information
http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx
I followed the approach listed below when I had Bad Data
error while manual decryption.
Remove
and Clear
tags in configProtectedData
.–pri
was used while exporting keykeyContainerName="MyKeys"
CONFIG
<configProtectedData>
<providers>
<clear/>
<remove name="RSAProtectedConfigurationProvider" />
<add name="RSAProtectedConfigurationProvider" keyContainerName="MyKeys"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
 processorArchitecture=MSIL"
useMachineContainer="true" />
</providers>
</configProtectedData>
REFERENCE
Actually you can use EL from Microsoft just to encrypt your connection string. You can download it here: http://www.codeplex.com/entlib
hth
Encrpyting is very case sensitive as mahdi said. I have used in my pc and taken it to the sever I had a problem the problem was from the RSA machine key containers that are stored in my PC folder OR directory. and If you want to know where the correction may be started before making any change, Just start from
\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys.
For info, kindly reffer to this link which might be a helpful....
http://msdn.microsoft.com/en-us/library/ms998283.aspx