2012-02-23 75 views
4

如果開發加密自己的機器上使用RSAProtectedConfigurationProvider連接字符串的app.config部分,而這隨後被部署到用戶的工作站上,可以將該用戶的工作站(或服務器,用於那件事),自動解密連接字符串?部署的連接字符串

會某種重要的出口/安裝的需要?這個怎麼用? 我意識到它不是防彈的。我在尋找關於部署是否容易和/或使用這種加密連接字符串的建議。

回答

7

這是可能的。有API來做到這一點(看System.Security.Cryptography命名空間),或在命令行中,你可以使用ASPNET_REGIIS:

aspnet_regiis -pc -exp : create an exportable key pair 
aspnet_regiis -px : export an RSA key pair to an XML file 
aspnet_regiis -pi : import an RSA key pair from an XML file 
aspnet_regiis -pa : add access for an account to a key container 

當然,使用加密時,你只是代保護數據的問題(你的連接字符串)由保護密鑰的問題。

在你的榜樣,因爲你,因爲你說你知道這不是防彈的都知道,用戶將需要訪問密鑰容器,以便將能夠解密加密的連接字符串。

此外,人誰得到包含導出密鑰對XML文件的保持就可以這樣做。

UPDATE

部署過程會是這樣的:

  • 對開發商建立開發人員工作站上的導出密鑰(ASPNET_REGIIS -pc -exp)
  • 加密配置部分使用此密鑰的工作站
  • 將密鑰導出到XML文件(aspnet_regiis -px)
  • XML文件複製到目標機器
  • 導入從目標機器上的XML文件的密鑰(ASPNET_REGIIS -pi)
  • 給用戶帳戶的讀訪問目標計算機上的按鍵(ASPNET_REGIIS-PA)

使用受保護的配置提供程序(如RSAProtectedConfigurationProvider)加密的節將自動解密,前提是運行該應用程序的Windows標識具有對RSA密鑰容器的讀取權限。

+0

謝謝。你能否詳細說明這個關鍵容器?這是我需要知道的 - 這是如何從開發人員工作站部署到目標機器的?目標機器如何自動解密? – 2012-02-23 16:13:44

+0

@PittsburghDBA - 查看更新。 – Joe 2012-02-23 18:58:00

+0

太棒了。謝謝。 – 2012-02-23 21:19:19