ASP.NET 連線字串加密

  • 1891
  • 0
  • 2017-03-28

ASP.NET 連線字串加密

如果只想快點做好,不想看一堆有的沒的這裡有賴人包
在主機上CommendLine上輸入即可

如果只想快點做好,不想看一堆有的沒的這裡有賴人包
在主機上CommendLine上輸入即可

加密:
aspnet_regiis -pe "connectionStrings" -app "/FooApplication"
(實體路徑用-pef)
aspnet_regiis -pef "connectionStrings" "C:\Inetpub\wwwroot\FooApplication"

解密:
aspnet_regiis -pd "connectionStrings" -app "/FooApplication"

web.config要加密的連線字串tag
ASP.NET應用程式路徑

在多台機器上做加密

不用一台一台的做,只需由某一台產生金鑰並匯出即可,只是第一次的設定過程很麻煩!

1.建立可匯出的RSA金鑰容器:

建立RSA金鑰容器:
aspnet_regiis -pc "FooKey" -exp
刪除金鑰:
aspnet_regiis -pz "FooKey"

金鑰自訂名稱

讓私密金鑰為可匯出狀態

2.將RSA金鑰容器XML檔匯出至C槽根目錄(比較好找)

aspnet_regiis -px "FooKey" C:\FooKey.xml -pri
包含私密金鑰

3.在其他機器上匯入金鑰,記得先把金鑰XML拷貝過去

aspnet_regiis -pi "FooKey" C:\FooKey.xml

4.為容器加入帳戶存取權限

aspnet_regiis -pa "FooKey" "NT AUTHORITY\NETWORK SERVICE"

注意:

新版IIS「NT AUTHORITY\NETWORK SERVICE」會使用「IIS AppPool\應用程式集區名稱」,語法就變成
aspnet_regiis -pa "FooKey" "IIS AppPool\FooApplication"

請參考保哥的文章

5.Web.config的configProtectedData區段設定

<configuration>
  <configProtectedData defaultProvider="FooKey">
    <providers>
      <add name="FooKey" 
        type="System.Configuration.RsaProtectedConfigurationProvider, 
              System.Configuration, Version=2.0.0.0, Culture=neutral, 
              PublicKeyToken=b03f5f7f11d50a3a,
             processorArchitecture=MSIL"
        keyContainerName="FooKey" 
        useMachineContainer="true" />
    </providers>
  </configProtectedData>
</configuration>
建議把configProtectedData <add name="FooKey".......打成一行,因為經過aspnet_regiis加密後,可能會把斷行變成這副德行,造成程式無法運作

6.進行加密

aspnet_regiis -pe "connectionStrings" -app "/FooApplication" -prov "FooKey"

7.將Web.config拷貝至其他器機中

 

參考資料:
MSDNThe Will Will Web、ASP.NET RegIIS說明文件