2012-03-20 57 views
2

我已經完成了以下操作,以便使用RSA提供程序加密web.config。asp.net web.config encryption - 未找到RSA密鑰容器

RDP到Web服務器並用我的帳戶打開VS命令提示符。

創建自定義的RSA加密密鑰:

aspnet_regiis -pc "MyKey" -exp

加密使用自定義的RSA密鑰connectionStrings節:

aspnet_regiis.exe -pef "connectionStrings" "D:\Web\" -prov "MyRsaProvider"

我可以看到的web.config已經被加密。然而,當我嘗試加載網頁,它拋出以下錯誤:

"....The RSA key container was not found."

然後我嘗試了這些命令,逐一進行測試:

aspnet_regiis -pa "MyKey" "domain\appPool_serviceAccount"

aspnet_regiis -pa "MyKey" "ASPNET"

aspnet_regiis -pa MyKey" IIS APPPOOL\CRSAppPool" -full

aspnet_regiis -pa "MyKey" "NT Authority\Network Service"

而且,我仍然得到這個錯誤:

"....The RSA key container was not found."

有人可以幫助我,無論是框架bug還是我做的事情不對?

+0

這些命令只能從具有管理員權限的命令提示符工作 – 2016-03-26 08:57:41

回答

1

您確定您的網站應用程序的應用程序池正在運行的正確標識嗎?

試試這個。與此內容

<%@ Page Language="C#" %> 
<% 
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name); 
%> 

調用它任何你喜歡的,然後導航到它創建網絡應用中的一個aspx頁面,它會給你的實際身份的Web應用程序使用。如果您尚未授予該用戶密鑰的訪問權限,則授予該密鑰並查看其是否有效。

編號:Walkthrough: Creating and Exporting an RSA Key Container

1

只是試試這個,它會工作

ASPNET_REGIIS -PX 「MyKeys」「C:\ Documents和Settings \所有用戶\應用數據\微軟\加密\ RSA \ MachineKeys的\ keys.xml」 -pri

所有按鍵將被存儲在那裏

+0

C:\用戶\所有用戶\服務器上的微軟2012 \加密\ RSA \ MachineKeys的 – 2016-07-14 10:42:20

0

請問你的web.config包含正確的加密頭?

<configuration> 
    <configProtectedData defaultProvider="MyRsaProvider"> 
<providers> 
    <add name="MyRsaProvider" 
    type="System.Configuration.RsaProtectedConfigurationProvider, 
      System.Configuration, Version=2.0.0.0, Culture=neutral, 
      PublicKeyToken=b03f5f7f11d50a3a, 
      processorArchitecture=MSIL" 
    keyContainerName="MyKeys" 
    useMachineContainer="true" /> 
</providers> 

在這裏看到:http://msdn.microsoft.com/en-us/library/68ze1hb2(v=vs.100).aspx

1

對我來說,問題是,我的web應用程序是在冒充模式,我是冒充沒有訪問密鑰的用戶運行。要解決我假設應用程序池標識時做DB連接:

  var revert = new RevertToAppPool(); 
      revert.UseAppPoolIdentity(); 
      database = DB.GetDatabase(); 
      revert.ReturnToImpersonatingCurrentUser();