2014-10-10 104 views
20

我閱讀並測試了很多內容,以找到加密並將app.config部署到不同機器的最佳實踐。一般來說,我想確保來自第三方的連接字符串的內容並將應用程序部署到不同的機器。我會不是手動配置每臺機器。加密和部署app.config

我知道有幾種方法,如:

  • ASPNET_REGIIS(RSAProtectedConfigurationProvider, DPAPIProtectedConfigurationProvider)綁定到一臺機器,用戶或自定義。 RSA加密密鑰。

  • System.Security.Cryptography.ProtectedData綁定到機器或用戶。在第一次執行時加密app.config。哪個不安全。

你有什麼建議或什麼是加密的app.config,並通過安裝或複製粘貼&提供應用程序不同的機器上的最佳做法?

回答

11

步驟1創建RSA密鑰對

aspnet_regiis -pc yourkey -exp 

第二步導出你的XML文件

aspnet_regiis -px yourkey keyfile.xml -pri 

鍵在各機

第三步:導入你的容器

aspnet_regiis -pi yourkey keyfile.xml (see step 2) 

對於每個機器

第四步編輯的machine.config(規範的路徑C:\的Windows \ Microsoft.NET \框架[64 | 32]符\ v [版] \配置)

添加在第configProtectedData此以下元件,並設置defaultProvider = 「YourProvider」

<add name="YourProvider" 
       type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
       description="Uses RsaCryptoServiceProvider to encrypt and decrypt for my infrastucture" 

       keyContainerName="yourkey" 

       cspProviderName="" 
       useMachineContainer="true" 
       useOAEP="false" /> 

然後你可以在一臺機器加密和其他粘貼,請記住,必須給予的特權用戶

aspnet_regiis -pa yourkey [DOMAIN\USER] 

Administrators組已授權。

欲瞭解更多信息http://msdn.microsoft.com/en-us/library/yxw286t2(v=vs.90).aspx

當然這個步驟,你可以把一個PowerShell /批處理文件

另一種方式的加密通過代碼connectionStrings節是

var connectionStrings = ConfigurationManager.GetSection("connectionStrings") 
if(!section.SectionInformation.IsProtected) 
    connectionStrings.SectionInformation.ProtectSection("YourProvider"); 

在連接和客戶端/服務器場景我建議你在廣泛的網絡中採用的解決方案不是在app.config中分發連接字符串,而是在可以是Web服務或RESTful的服務中要求連接的信息用戶認證後的服務。

在步驟多個O少因此

  1. 驗證用戶
  2. 需要在提供服務與用戶名作爲參數(HTTPS協議)
  3. 服務返回連接字符串
  4. 應用它連接在連接信息DB

使用此解決方案,您可以選擇用戶連接的服務器,如果您有區域服務器或多個服務器

我希望有所幫助

+0

我是否爲每臺機器使用相同的RSA密鑰對?每個將執行該應用程序的域用戶都需要該密鑰的特權嗎? – hofmeister 2014-10-10 16:23:25

+0

是的,您必須在所有機器上使用相同的密鑰,並將權限授予唯一的應用程序池用戶,即網絡服務或應用程序的應用程序 – Fabio 2014-10-10 16:54:09

+0

我認爲這是服務器場的一個很好的解決方案。但是如果你想爲1000多臺機器和用戶提供你的應用程序呢? – hofmeister 2014-10-10 18:39:27

3

正如我在這個問題已經提到,有很多不同的方法來加密的配置文件。從廣泛的角度來看,我想描述一個額外的機會。我不會描述具體的實施,更多的概念。

通過msi安裝程序中的自定義操作,您可以使用Windows數據保護API(DPAPI)直接加密配置文件。爲了保證第二個熵,你可以使用混淆器。因此,只有應用程序能夠加密配置文件。

優勢

  • 相當安全的。
  • 不需要機器配置。
  • 在安裝過程中插入憑證。

缺點

  • 配置文件沒有在設置加密。你必須保護它(權限)。

請隨時討論並給出一些反饋意見。