2013-02-12 35 views
6

我有一個Web應用程序,我使用'發佈'選項發佈到三個Web服務器。加密WebConfig

我想加密web配置文件的connectionstrings部分。下面的命令將做到這一點:

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" c:\inetpub\application 

然而,我不得不RDP(遠程桌面),每個服務器和每個服務器上運行的命令,你不能像這樣運行它(從客戶端PC):

\服務器\ C $ \ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ ASPNET_REGIIS.EXE -pef 「的ConnectionStrings」 \服務器名\ C $ \的Inetpub \應用

是否有這樣做的更好的方法:或許:

1)Execu TE發佈2之後的服務器上的命令行)使用Visual Studio中的 構建選項,使您可以在發佈後執行批處理文件 完成

+0

請問爲什麼你不信任你的web服務器。另外,通常當您生成部署包時,它應該刪除連接字符串。我配置了我的IIS服務器來處理這個問題,並從IIS控制檯中添加它們的連接字符串。這可能會比在web.config文件中傳遞連接字符串更好,因爲它允許每臺計算機配置/負載平衡更輕鬆。 – Colton 2013-02-12 17:25:33

+0

該Web應用程序已部署到局域網中的少數客戶端PC上。如果我不加密連接字符串部分;任何人都可以看到登錄的數據庫密碼。 – w0051977 2013-02-12 17:27:03

+1

足夠公平......您可以使用集成安全性嗎?如果服務器設置正確,這將完全緩解您的問題,但爲SQL設置AD身份驗證似乎是一個非常官僚的過程。 – Colton 2013-02-12 18:19:56

回答

1

如果集成的安全性是不是一種選擇,我建議你MS Web Deploy

當您使用Visual Studio 2012構建deployment package時,您將得到一個zip文件和命令行腳本文件。您可以修改該腳本文件以加密您的web.config或滾動您自己的批處理腳本或PowerShell腳本。

+0

在Web Deploy 3.5版中添加了對加密後的web.config部分進行加密的支持部分。 https://blogs.iis.net/msdeploy/archive/2013/07/09/webdeploy-3-5-rtw.aspx – cederlof 2013-10-28 13:50:21

3

加密服務器上web.config的connectionStrings部分,然後將此加密部分添加到您的Web [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> 

0

這是一個老問題,但這個答案可以幫助別人。

在負載均衡或Web場方案中,您可以加密文件一次並將web.config複製到其他機器。但是,爲了達到這個目的,您必須爲每個網站使用相同的機器密鑰。

https://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

希望這有助於任何人尋找這一點。