加密Web配置

时间:2013-02-12 17:21:59

标签: asp.net

我有一个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中的构建选项,允许您执行批处理文件   发布完成后

3 个答案:

答案 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

希望这有助于任何人搜索此内容。