ASP.NET MVC 4 - 我應該如何加密到我的生產 SQL 伺服器的連接字元串?
我有一個 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>部分,就像我之後一樣。