在app.config中为WinForms应用程序加密连接字符串

时间:2010-12-03 08:01:56

标签: winforms encryption connection-string rsaprotectedconfiguration

我在web和WinForms应用程序之间使用通用数据库代码。我研究并研究了如何加密web.config和app.config文件的连接字符串部分。那部分还可以。我还研究了如何在我的Azure Web应用程序中解密连接字符串,这没关系。在将.pfx文件加载到计算机的证书存储区之后,我还可以读取WinForms应用程序中的连接字符串,但是在重新启动后它失败了,因为它无法在pfx文件中找到私钥。

我正在使用使用这些命令创建的证书:

makecert -r -pe -n“CN = myconfig”-sky exchange“myconfig.cer”-sv“myconfig.pvk”

pvk2pfx -pvk“myconfig.pvk”-spc“myconfig.cer”-pfx“myconfig.pfx”-pi

这给了我3个文件:myconfig.pvk,myconfig.cer,myconfig.pfx

我认为问题是私钥没有存储在pfx文件中,并且每次重启后都需要重新进行身份验证 - 但我不知道加密知道如何做到这一点。此外,WinForms应用程序非常有限地分发到受控计算机上,所以我想手动安装每个证书。

我是加密的新手,我被卡住了。我可以将.pfx文件加载到计算机上,输入私钥(我知道但不会告诉用户)&有持久存储?我错过了什么 - 我应该安装不同的证书文件,还是生成它?我不想让私钥可访问。如果有人窃取app.config,我不希望他们能够解密它。

注意:我已阅读有关RsaProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider的信息。我选择使用PKCS12ProtectedConfigurationProvider,因为它适用于Azure,参考:http://blogs.msdn.com/b/sqlazure/archive/2010/09/07/10058942.aspx

1 个答案:

答案 0 :(得分:0)

当我将应用程序部署到我的本地IIS和i时,我偶然发现了答案。得到错误“无法使用提供程序解密'CustomProvider'。来自提供程序的错误消息:Keyset不存在”

私钥存在权限问题,在本文的帮助下解决了这个问题:

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

该文章包含许多可能的原因,解决我的问题的原因是修复了“MMC证书”管理单元中“管理私钥”中的权限(请参阅链接,步骤布局合理)。