對於將同壹個經過加密的 Web.config 文件部署到數臺服務器上的網絡場,這會非常有用。在這種情況下,還必須將相同的 RSA 密鑰容器部署到這些服務器上。為了實現此目的,需要為應用程序創建壹個 RSA 密鑰容器,將它導出到 XML 文件,然後在每臺需要對加密的 Web.config 文件進行解密的服務器上導入該文件。在承載多個 ASP.NET 應用程序的單臺 Web 服務器上,創建 RSA 密鑰容器也非常有用。通過為壹個客戶的每個或每組應用程序都創建壹個 RSA 密鑰容器,可以確保壹個應用程序的 RSA 密鑰容器不能用來對另壹個應用程序的 Web.config 文件進行解密,從而提高應用程序的敏感配置信息的安全性。創建RSA 密鑰容器若要創建 RSA 密鑰容器,請使用 ASP.NET IIS 註冊工具 (Aspnet_regiis.exe) 及 –pc 開關。必須為密鑰容器指定壹個名稱,該名稱標識應用程序的 Web.config 文件的 configProtectedData 節中指定的 RsaProtectedConfigurationProvider 所使用的密鑰容器。為確保可以導出新創建的 RSA 密鑰容器,必須包括 -exp 選項。例如,下面的命令創建壹個名為 SampleKeys 的 RSA 密鑰容器,該容器是可導出的計算機級密鑰容器。aspnet_regiis -pc "SampleKeys"–exp下面的示例演示了 Web.config 文件的 configProtectedData 節。該節指定使用名為 SampleKeys 的計算機級 RSA 密鑰容器的 RsaProtectedConfigurationProvider。<configProtectedData> <providers> <add name="SampleProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a processorArchitecture=MSIL" keyContainerName="SampleKeys" useMachineContainer="true" /> </providers> </configProtectedData>授予對 RSA 密鑰容器的訪問權限默認情況下,RSA 密鑰容器受到所在服務器上的 NTFS 訪問控制列表 (ACL) 的嚴密保護。這樣能夠限制可以訪問加密密鑰的人員,從而增強加密信息的安全性。必須首先向 ASP.NET 應用程序的進程標識授予對該 RSA 密鑰容器的讀取訪問權限,然後 ASP.NET 才能使用 RSA 密鑰容器。有關設置和確定 ASP.NET 應用程序標識的信息,請參見 ASP.NET 模擬。可以使用 Aspnet_regiis.exe 工具及 -pa 開關,向 ASP.NET 應用程序的標識授予讀取 RSA 密鑰容器的權限。例如,下面的命令向 Windows Server 2003 NETWORK SERVICE 帳戶授予對名為 SampleKeys 的計算機級 RSA 密鑰容器的讀取訪問權限:aspnet_regiis -pa "SampleKeys" "NT AUTHORITY/NETWORK SERVICE"若要使用計算機配置中指定的默認 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"導出RSA 密鑰容器若要將 RSA 密鑰容器導出到 XML 文件,可以使用 Aspnet_regiis.exe 工具及 –px 開關。XML 文件可以用作 RSA 密鑰容器的備份,也可用於在其他服務器上導入 RSA 密鑰容器。若要對加密信息進行解密,RSA 密鑰容器的私鑰部分是必需的。若要在另壹臺服務器上使用導出的密鑰容器,還需導入私鑰。通過在導出密鑰時指定 –pri 選項,可以在 XML 文件中包括私鑰。還必須指定導出的密鑰容器是計算機級還是用戶級的。若要導出用戶級密鑰容器,必須以其 Windows 配置文件存儲了密鑰的用戶的身份登錄。若要指定用戶級密鑰,請在導出加密密鑰信息時包括 -pku 選項;否則,導出的密鑰將來自計算機密鑰存儲區。有關計算機級和用戶級加密密鑰的更多信息,請參見 了解計算機級別和用戶級別的 RSA 密鑰容器。例如,下面的命令將名為 SampleKeys 的計算機級 RSA 密鑰容器導出到名為 keys.xml 的文件中並包括了私鑰信息。aspnet_regiis -px "SampleKeys" keys.xml -pri導入RSA 密鑰容器可以使用 Aspnet_regiis.exe 工具和 –pi 開關,從 XML 文件導入 RSA 密鑰容器。還必須指定導入的密鑰容器是計算機級還是用戶級的密鑰容器。
上一篇:Python數據結構與算法-哈希map的實現及原理下一篇:寫文章源代碼