如何對組態區段加密

在 ASP.NET 2.0 中,你可以用 Configuration APIs 對 web.config 中的敏感性資訊(如使用者名稱、密碼、連線字串和加密金鑰等)進行加密保護,以提升應用程式的安全性。不過,你可以使用更簡單的 Aspnet_regiis.exe 工具來完成加密處理。當要求網頁時,ASP.NET 會自行將加密的組態資訊解密,讓應用程式使用。所以,你不需要撰寫額外的程式碼來讀取加密過的組態資訊。

接下來,將以 connectionStrings 區段為例,提供逐步指引來說明如何使用 Aspnet_regiis.exe 加密組態資訊。

  1. 先將 ASP.NET 應用程式檔案部署到 Web 實際執行伺服器(Production Server)。
  2. 在 IIS 中建立 ASP.NET 網站:
    1. 打開 IIS 管理主控台。
    2. 展開本機電腦節點,接著展開 [網站],建立新的網站。
    3. 點選 [ASP.NET] 頁簽,將 ASP.NET 版本設為 2.0.*。若無該頁簽,則到 [主目錄] 頁簽,按下 [設定] 按鈕,在 [對應] 索引標籤上,將 ASP.NET 相關應用程式副檔名對應的應用程式指向 %WINDIR%\Microsoft.NET\Framework\v2.0.*\aspnet_isapi.dll。
  3. 建立 RSA 金鑰容器(Key Container):
    1. 打開 Web 應用程式根目錄的 web.config,修改成實際執行的連線字串。
    2. 在 [執行] 對話方塊中的 [開啟] 方塊中,鍵入 cmd,然後按下 [確定] 。
    3. 建立名為 NetFrameworkConfigurationKey 的電腦層級 RSA 金鑰容器,請在命令提示字元中執行下列命令:
      %WINDIR%\Microsoft.NET\Framework\v2.0.*\aspnet_regiis.exe -pc "NetFrameworkConfigurationKey" -exp
    4. 授予 ASP.NET 使用者識別(在 Windows Server 2003 的電腦上,預設為 NETWORK SERVICE 帳戶)能讀取這個金鑰容器的權限,請執行下列命令:
      C:\WINDOWS\Microsoft.NET\Framework\v2.0.*\aspnet_regiis.exe -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
  4. 加密 connectionStrings 區段:
    1. 請在命令提示字元中執行下列命令:
      C:\WINDOWS\Microsoft.NET\Framework\v2.0.*\aspnet_regiis.exe -pef connectionStrings %路徑%
    2. 如果需要修改連線字串,可以用如下的指令解密:
      C:\WINDOWS\Microsoft.NET\Framework\v2.0.*\aspnet_regiis.exe -pdf connectionStrings %路徑%

參考資料:
逐步解說:使用受保護的組態加密組態資訊 by Microsoft
逐步解說:建立和匯出 RSA 金鑰容器 by Microsoft


Share/Save/Bookmark

0 comments :: 如何對組態區段加密

張貼留言