Asp.net-Mvc

ASP.NET MVC 4 - 我應該如何加密到我的生產 SQL 伺服器的連接字元串?

  • October 28, 2016

我有一個 ASP.NET MVC 4 項目,該項目將部署到 Azure 進行生產,在生產中我使用 SQL Azure 數據庫。我的問題是我只想在生產部署中連接到 SQL Azure 數據庫,而不是在開發時,並且SQL Azure 連接字元串應該加密。

現在,我可以通過 Web.config 轉換解決第一個要求,以便在部署到 Azure 時替換數據庫連接字元串。但是,我看不到如何將它與連接字元串加密結合起來?如何在部署時既加密 SQL Azure 連接字元串又用它代替開發連接字元串?這種情況下的最佳實踐將是最受歡迎的:)

我認為這裡一個好的解決方案是將生產<connectionStrings>部分輸入Web.config並對其進行加密,然後將加密<connectionStrings>部分移動到轉換文件(例如Web.Release.config)並對其進行註釋,以便<connectionStrings>在轉換時替換整個部分. 這實現了使用同樣加密的生產連接字元串部署 Web.config 的目標。

我已按照“在 Windows Azure 中保護連接字元串”中的指南1、2、3和4部分了解如何加密 Web.config。我建議作為一個完整的參考,其他人也這樣做。我將概述我為解決我的場景而執行的主要步驟。

<connectionStrings>使用生產設置更新 Web.config 中的部分後,我安裝了Pkcs12 Protected Configuration Provider並執行 aspnet_regiis.exe 來加密該部分(在 Visual Studio 命令提示符中,位於項目目錄中):

aspnet_regiis -pef "connectionStrings" "." -prov "CustomProvider"

CustomProvider我還在Web.config中添加了一個定義:

<configProtectedData>
 <providers>
   <add name="CustomProvider" thumbprint="<your thumbprint here>"
      type="Pkcs12ProtectedConfigurationProvider.Pkcs12ProtectedConfigurationProvider, PKCS12ProtectedConfigurationProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=34da007ac91f901d"/>
 </providers>
</configProtectedData>

之後,我將加密<connectionStrings>部分移動到 Web.Release.config(用於在部署到 Azure 時轉換 Web.config),並註釋該部分,以便它替換 Web.config 中的相應部分:

connectionStrings configProtectionProvider="CustomProvider" xdt:Transform="Replace">
...
</connectionStrings>

<connectionStrings>最後,我在 Web.config 中恢復了開發部分。我已經測試了這個解決方案,發現部署的 Web.config 包含加密<connectionStrings>部分,就像我之後一樣。

引用自:https://stackoverflow.com/questions/11921936