我有一个Web应用程序,我使用'publish'选项将其发布到三个Web服务器。
我想加密web配置文件的connectionstrings部分。以下命令将执行此操作:
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" c:\inetpub\application
但是,我必须对每台服务器使用RDP(远程桌面)并在每台服务器上运行该命令,因为您无法像这样(从客户端PC)运行它:
\ servername \ c $ \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -pef“connectionStrings”\ servername \ c $ \ inetpub \ application
有没有更好的方法:或许:
1)发布后在服务器上执行命令行2)使用a Visual Studio中的构建选项,允许您执行批处理文件 发布完成后
答案 0 :(得分:4)
加密服务器上web.config的connectionStrings部分,然后将此加密部分添加到您的网站。[CONFIGURATION_FOR_SERVER] .config转换文件。第一行的关键是用这个新的加密值替换原始web.config的connectionStrings部分。您将需要为要发布的每个服务器创建一个新的转换文件。 Visual Studio将发出警告(而不是错误),即
Warning 15 The element 'connectionStrings' has invalid child element 'EncryptedData' in namespace 'http://www.w3.org/2001/04/xmlenc#'. List of possible elements expected: 'add, remove, clear'. C:\DevTFS\YourProject\Web.Stage.config 14 6 YourProject
关于这个转换文件的格式 - 我没有找到正确的语法来解决这个问题,所以我愿意接受建议,但它仍然有效,所以我很高兴。关于此的完整博客文章:http://randomdotnetnuggets.blogspot.com.au/2013/05/publishing-encrypted-connection-strings.html
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider" xdt:Transform="Replace">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>t8p7aOZTjMo...zE6FAAI=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>Vy1TZWY8....ic+Qg6T7U</CipherValue>
</CipherData>
</EncryptedData>
答案 1 :(得分:1)
如果无法选择集成安全性,我建议您MS Web Deploy。
使用Visual Studio 2012构建deployment package时,您将获得一个zip文件和命令行脚本文件。您可以修改该脚本文件以加密web.config或滚动自己的批处理脚本或PowerShell脚本。
答案 2 :(得分:1)
这是一个老问题,但这个答案可能有助于某人。
在负载平衡或Web场方案中,您可以加密文件一次并将web.config复制到其他计算机。但是,要使其正常工作,您必须为每个网站使用相同的计算机密钥。
https://msdn.microsoft.com/en-us/library/dtkwfdky.aspx
希望这有助于任何人搜索此内容。