0

J'utilise un code de base de données commun entre une application Web et WinForms. J'ai recherché et calculé comment crypter la section de chaînes de connexion d'un fichier web.config et app.config. Cette partie est ok. J'ai également travaillé sur la façon de décrypter les chaînes de connexion dans mon application web Azure, c'est bon. Je peux également lire les chaînes de connexion dans mon application WinForms après avoir chargé le fichier .pfx dans le magasin de certificats de la machine, mais après le redémarrage, il échoue, car il ne trouve pas de clé privée dans le fichier pfx.Cryptage des chaînes de connexion dans app.config pour l'application WinForms

J'utilise un certificat créé avec ces commandes:

makecert -r -n -pe "CN = myconfig" échange -sky "myconfig.cer" -sv "myconfig.pvk"

Pvk2pfx -pvk "myconfig.pvk" -spc "myconfig.cer" -pfx "myconfig.pfx" -pi

Cela me donne 3 fichiers: myconfig.pvk, myconfig.cer, myconfig.pfx

Je suppose le problème est que la clé privée n'est pas stockée dans le fichier pfx, et doit être ré-authentifiée chaque fois après un redémarrage - mais je ne sais pas assez sur le cryptage pour savoir comment faire cela. De plus, l'application WinForms est pour une distribution très limitée sur les machines contrôlées, donc je voudrais installer chaque certificat manuellement. Je suis un débutant au cryptage et je suis coincé. Puis-je charger un fichier .pfx sur une machine, entrez la clé privée (que je sais mais je ne le dirai pas à l'utilisateur) & avez-vous stocké de manière persistante? Ai-je manqué quelque chose? Y a-t-il un fichier de certificat différent que je devrais installer ou comment le générer? Je ne veux pas laisser la clé privée accessible. Si quelqu'un vole le fichier app.config, je ne veux pas qu'il soit capable de le déchiffrer.

Remarque: J'ai lu à propos de RsaProtectedConfigurationProvider et de DPAPIProtectedConfigurationProvider. Je l'ai choisi d'utiliser PKCS12ProtectedConfigurationProvider car il fonctionne avec Azure, ref: http://blogs.msdn.com/b/sqlazure/archive/2010/09/07/10058942.aspx

Répondre

0

Je suis tombé sur la réponse quand je déployé l'application à mon IIS local & obtenu l'erreur « Impossible de décrypter l'aide du fournisseur « CustomProvider » Message d'erreur de. le fournisseur: keyset n'existe pas »

Il y avait un problème d'autorisations avec la clé privée, résolue avec l'aide de cet article:

CryptographicException 'Keyset does not exist', but only through WCF

l'article comprend un certain nombre de ca possible utilise, celui qui a résolu mon problème consistait à corriger les permissions dans 'Gérer les clés privées' du composant logiciel enfichable MMC Certificats (voir le lien, les étapes sont bien définies).