asp.net下加密Config的方法
asp.net下加密Config的方法:
<!-- 連接字符串是否加密 -->
<add key="ConStringEncrypt" value="false"/>
<!-- 連接字符串,(可以擴展支持不同數據庫)如果是加密方式,上面一項要設置為true,如果是明文server=127.0.0.1;database=codematic;uid=sa;pwd=,上面設置為false -->
<add key="ConnectionString" value="Data Source=DataDirectory\wm.mdb;Persist Security Info=True"/>
<!--權限模塊連接字符串-->
<add key="ConnectionStringAccounts" value="Data Source=DataDirectory\wm.mdb;Persist Security Info=True"/>
<add key="ConnectionString2" value="Data Source=DataDirectory\wm.mdb;Persist Security Info=True"/>
<!--虛擬目錄名稱(如果是站點,則為空) -->
<add key="VirtualPath" value=""/>
<!--登錄頁地址 -->
<add key="LoginPage" value="admin/Login.aspx"/>
<!--默認菜單是否是展開狀態-->
<add key="MenuExpanded" value="false"/>
<!--實體對象內容緩村的時間(分鐘)-->
<add key="ModelCache" value="30"/>
</appSettings>
在asp.net2.0中新增了對web.config中的部分數據進行加密的功能,可以使用RSAProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider來加密,本文說明使用RSAProtectedConfigurationProvidert和計算機級別的密鑰容器進行加密的步驟。
1. 首先確定要進行加密的web.config中的配置節是否可以加密
2. 創建RSA密鑰容器
3. 在web.config中標識要使用的密鑰容器
4. 對web.config進行加密
5. 授予對 RSA 密鑰容器的訪問權限
Step 1:首先確定要進行加密的web.config中的配置節是否可以加密
ASP.NET 2.0支持對Web.config的部分配置節進行加密,以下配置節中的數據是不能進行加密的:
* <processModel>
* <runtime>
* <mscorlib>
* <startup>
* <system.runtime.remoting>
* <configProtectedData>
* <satelliteassemblies>
* <cryptographySettings>
* <cryptoNameMapping>
* <cryptoClasses>
Step2:創建 RSA 密鑰容器
若要創建 RSA 密鑰容器,請使用 ASP.NET IIS 注冊工具 (Aspnet_regiis.exe) 及 –pc 開關。必須為密鑰容器指定一個名稱,該名稱標識應用程序的 Web.config 文件的 configProtectedData 節中指定的 RsaProtectedConfigurationProvider 所使用的密鑰容器。為確保可以導出新創建的 RSA 密鑰容器,必須包括 -exp 選項。
例如,下面的命令創建一個名為 ABeenKeys 的 RSA 密鑰容器,該容器是可導出的計算機級密鑰容器。
aspnet_regiis -pc "ABeenKeys"–exp
Step 3: Modify web.config to identify the key container
編輯Web.config文件以標識要使用的密鑰容器
在web.config中加以<configProtectedData>來配置密鑰容器, 使用名為 ABeenKeys 的計算機級 RSA 密鑰容器的
在<configuration>中加入xmlns屬性
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
使用名為 ABeenKeys 的計算機級 RSA 密鑰容器的 saProtectedConfigurationProvider。
<configProtectedData >
<providers>
<add name="ABeenProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, processorArchitecture=MSIL"
keyContainerName="ABeenKeys"/>
</providers>
</configProtectedData>
Step 4: Encrypt the <connectionStrings> section of your web.config file
加密你的web.config文件中的配置節
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
Step 5:授予對 RSA 密鑰容器的訪問權限
可以通過以下代碼確定應該給哪個用戶權限
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
默認情況下,RSA 密鑰容器受到所在服務器上的 NTFS 訪問控制列表 (ACL) 的嚴密保護。這樣能夠限制可以訪問加密密鑰的人員,從而增強加密信息的安全性。必須首先向 ASP.NET 應用程序的進程標識授予對該 RSA 密鑰容器的讀取訪問權限,然后 ASP.NET 才能使用 RSA 密鑰容器。可以使用 Aspnet_regiis.exe 工具及 -pa 開關,向 ASP.NET 應用程序的標識授予讀取 RSA 密鑰容器的權限。例如,下面的命令向 Windows Server 2003 NETWORK SERVICE 帳戶授予對名為 ABeenKeys 的計算機級 RSA 密鑰容器的讀取訪問權限:
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITY\NETWORK SERVICE"
注意:
如果 RSA 密鑰容器是用戶級容器,必須以其 Windows 配置文件存儲了密鑰的用戶的身份登錄,并且必須包括 -pku 選項以授予對該用戶級 RSA 密鑰容器的訪問權限。
若要使用計算機配置中指定的默認 RsaProtectedConfigurationProvider,必須首先向應用程序的 Windows 標識授予對名為 NetFrameworkConfigurationKey 的計算機密鑰容器的訪問權限,該計算機密鑰容器是為該默認提供程序指定的密鑰容器。例如,下面的命令向 NETWORK SERVICE 帳戶授予對默認 RsaProtectedConfigurationProvider 所使用的 RSA 密鑰容器的訪問權限。
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
NetFrameworkConfigurationKey RSA 密鑰容器是 Aspnet_regiis.exe 工具所發出的命令的默認密鑰容器。因此上述命令也可以按以下方式發出:
aspnet_regiis -pa "NT AUTHORITY\NETWORK SERVICE"
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解