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

正在加密WinForms应用程序的app.config中的连接字符串,winforms,encryption,connection-string,rsaprotectedconfiguration,Winforms,Encryption,Connection String,Rsaprotectedconfiguration,我正在web和WinForms应用程序之间使用公共数据库代码。我已经研究并解决了如何加密web.config和app.config文件的连接字符串部分。那部分没问题。我还研究了如何解密Azure web应用程序中的连接字符串,没关系。在将.pfx文件加载到计算机的证书存储区后,我还可以读取WinForms应用程序中的连接字符串,但在我重新启动后,它失败了,因为它在pfx文件中找不到私钥 我正在使用使用以下命令创建的证书: makecert-r-pe-n“CN=myconfig”-天空交易所“my

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

我正在使用使用以下命令创建的证书:

makecert-r-pe-n“CN=myconfig”-天空交易所“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,我不希望他们能够解密它


注意:我已经阅读了RSAPProtectedConfigurationProvider和DPAPIPProtectedConfigurationProvider。我选择使用PKCS12ProtectedConfigurationProvider,因为它与Azure一起工作,参考:

当我将应用程序部署到本地IIS时,我偶然发现了答案,并收到错误“无法使用提供程序“CustomProvider”解密。提供程序的错误消息:密钥集不存在”

在本文的帮助下,私钥出现了权限问题:

这篇文章包括许多可能的原因,解决我的问题的原因是从MMC证书管理单元中修复“管理私钥”中的权限(请参阅链接,步骤安排得很好)