Le chiffrement / Déchiffrement de l'application.sections de configuration à l'aide de RsaProtectedConfigurationProvider
Lors de l'installation de notre programme, nous exécuter cette méthode pour encrpyt les sections de l'application.config:
//Get the application configuration file.
Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//Define the Rsa provider name.
const string provider = "RsaProtectedConfigurationProvider";
//Get the section to protect.
ConfigurationSection connStrings = config.ConnectionStrings;
if (connStrings != null)
{
if (!connStrings.SectionInformation.IsProtected)
{
if (!connStrings.ElementInformation.IsLocked)
{
//Protect the section.
connStrings.SectionInformation.ProtectSection(provider);
connStrings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
}
Fonctionne très bien jusqu'à présent. Mais si j'exécute ce programme, on rencontre de plusieurs machines d'erreur suivant "impossible de déchiffrer à l'aide du fournisseur RsaProtectedConfigurationProvider'. Message d'erreur de la part du fournisseur: Le conteneur de clé RSA n'a pas pu être ouvert".
Bien sûr j'ai cherché et trouvé cette aide, mais cela ne fonctionne pas. Des idées?
Qu'est-ce que le système d'exploitation sur l'échec des machines? Peut-être il pourrait être l'UAC+Élévation problème. Toutes les informations sur les machines serait bon.
Peut-être une bonne direction à suivre. Actuellement connues sont Vista, W7 et Server 2008.
Peut-être une bonne direction à suivre. Actuellement connues sont Vista, W7 et Server 2008.
OriginalL'auteur Jan | 2010-11-23
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans des problèmes similaires lors du débogage dans Visual Studio 2010 sur Win 7 avec le contrôle de compte d'utilisateur défini par défaut de protection.
Dans l'ordre pour moi de contourner ce problème, j'ai eu à exécuter Visual Studio en tant qu'Administrateur ("Exécuter en tant qu'Administrateur").
J'ai eu le même problème avec le fait d'essayer d'exécuter le aspnet_regiis.exe pour chiffrer la section de mon site web.config. Si je n'avais pas exécuter la ligne de commande/console "en tant qu'Administrateur", je voudrais obtenir une ligne de commande, erreur qui a été encore plus énigmatique: "l'Objet existe déjà."
OriginalL'auteur John
Oui.
Raison est que ces machines ont
RsaProtectedConfigurationProvider
installation dans leur de la machine.config. Ceux qui ne travaillent pas, n'ont pas d'elle - viens de l'ajouter manuellement pour ces machines.J'imagine que c'est l'une des étapes aspnet_regiis.exe. Je ne peux pas imaginer que vous souhaitez exécuter que sur tous les ordinateurs client.
Mise à JOUR
OK, j'ai fait la partie principale de l'erreur en gras dans votre question - vous avez raison c'est un problème différent. C'est un de sécurité question. Si vous regardez l'emplacement C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys ou C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys selon le système d'exploitation, vous voyez un certain nombre de fichiers. Votre processus n'ont accès au dossier afin de donner simplement les fichiers de l'accès à l'entier dossier de l'identité de l'application ou d'un fichier particulier (timestamp va vous dire si vous l'avez créé).
Impossible, pas avec exactement le même nom. Vérifiez le nom, et assurez-vous que c'est le même nom.
Il a vérifié deux fois, certainement les mêmes sections et même le contenu est le même.
J'ai mis à jour ma réponse maintenant.
OriginalL'auteur Aliostad
J'ai eu ce sur une application.config qui a été en cours d'exécution sur un Serveur Windows est configuré comme un Serveur SQL. Il n'a pas de IIS est installé. La machine.fichier de configuration figurant RSAProtectedConfigurationProvider comme valeur par défaut, mais lorsque nous avons examiné dans les deux dossiers mentionnés par Aliostad ci-dessus, les dossiers étaient vides.Il n'y avait pas les clés installées. Nous avons utilisé l'outil aspnet_regiis pour créer une clé personnalisée. puis nous l'avons utilisée pour accorder l'accès à l'identité que le job s'exécute sous. Tout ce qui était en cours d'exécution cmd.exe et aspnet_regiis en tant Qu'Administrateur.
OriginalL'auteur mia