2012-02-17 88 views
4

暗号化を適用すると、次のエラー(asp.net Webサイト)が表示されます。"RSAキーコンテナを開くことができませんでした" ACL許可後もエラー(一部のユーザー向け)

パーサーエラーメッセージ:プロバイダー 'RsaProtectedConfigurationProvider'を使用して解読できませんでした。プロバイダからのエラーメッセージ:RSAキーコンテナを開くことができませんでした。

注:下記の手順をご覧ください。

注:Windows認証を有効にし、ASP.NET偽装を有効にします。IIS7を使用しています。これは、Windows Server 2008で実行されています。アクセスは、ユーザーが許可されたADグループの一部であるかどうか(設定ファイルにリストされます)に基づいて制御されます。

興味深いのは、group1のユーザーが(location1から)アクセスするときにこのエラーが発生することです。 group2のユーザー(locatiob2から)がアクセスしようとすると、エラーは発生しません。

修正方法についてのご意見はありますか?

私たちは、展開ドキュメントから以下の手順に従っています。

  1. 管理者モードでコマンドウィンドウを実行します。
  2. ディレクトリの変更コマンド(cd)を使用して、C:\ Windows \ Microsoft.Net \ Framework \ v4.0.30319 \フォルダに移動します(Windows Server 2008では、cmdと入力してCtrl + Shift + Enterを押します)。
  3. 次のコマンドを入力して、RSA鍵コンテナを作成します。以下の(RSAキーコンテナへのアクセスのためにACLを追加する)とプレスがます。aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY \ネットワークサービス"
  4. タイプを入力し、次の
  5. タイプ-expます。aspnet_regiis -pc "NetFrameworkConfigurationKey" (強調表示されたテキストをサービスが展開されている場所に置き換えた後)Enterキーを押して、ServiceのWeb.Configの接続文字列を暗号化します。 aspnet_regiis.exe -pef「connectionStrings」「C:\ MyWCF \ ServiceName」
  6. 強調表示されたテキストをWebサイトが展開されている場所に置き換えて入力し、Enterキーを押してWebサイトのWeb.Configの接続文字列を暗号化します。 aspnet_regiis.exe -pef "connectionStrings" "C:\ MyWeb \ WebsiteName"
  7. 強調表示されたテキストをWebサイトのweb.configファイルが存在する場所に置き換えた後に入力し、enterキーを押してsessionStateを暗号化しますウェブサイトのWeb.Configの値。 aspnet_regiis.exe -pef "system.web/sessionState" "C:\ MyWeb \ WebsiteName"
  8. 接続文字列とSessionState値が暗号化されていることを確認します。
  9. Machine.ConfigのconfigProtectedDataセクションで以下の詳細を確認してください。

•defaultProvider = "RsaProtectedConfigurationProvider"

は•keyContainerName = "NetFrameworkConfigurationKeyは"

注ことを確認していることを確認してください:のmachine.configのデフォルトの場所はC:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v4.0.30319 \ Config

+0

リファレンス:http://stackoverflow.com/questions/2921589/the-rsa-key-container-could開かれていない – Lijo

答えて

6

以下は、マシン設定に関係しない私が試みたアプローチです。

注:宛先がWindows Sever 2008の場合、暗号化の手順はWindows Server 2008自体で実行する必要があります。

cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 
aspnet_regiis.exe -pc "MyProjectKeys" -exp 

キー

の登録注: - - :RSAキー

を含むサーバーAにアクセスを許可するだけ

aspnet_regiis.exe -pa "MyProjectKeys" "IIS APPPOOL\testpsreloservices" 
aspnet_regiis.exe -pa "MyProjectKeys" "NT AUTHORITY\NETWORK" 

エクスポートされたXMLファイルサーバ内の以下のコードに

注意を実行し

aspnet_regiis.exe -px "MyProjectKeys" E:\wmapps\webroot\myservice\MyProjectKey.xml –pri 

は、web.configファイル

Bサーバーで暗号化されたファイルをコピーし
aspnet_regiis -pef "connectionStrings" "E:\wmapps\webroot\myservice" -prov "RsaProtectedConfigurationProvider" 

を暗号化

<configProtectedData> 
    <providers> 
    <clear/> 
<remove name="RSAProtectedConfigurationProvider" /> 
    <add name="RSAProtectedConfigurationProvider" keyContainerName="MyProjectKeys" 
    type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,&#xD;&#xA;     
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,&#xD;&#xA; processorArchitecture=MSIL" 
      useMachineContainer="true" /> 
    </providers> 
</configProtectedData> 

に次を追加しました。 キーXMLファイルをBサーバーにコピーしました。

次のコマンドを使用してバッチファイル作成し、(キーの登録及び許可のアクセスのために)実行さ

c: 
cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 
aspnet_regiis.exe -pi "MyProjectKeys" E:\wmapps\webroot\myservice\MyProjectKey.xml 
aspnet_regiis.exe -pa "MyProjectKeys" "IIS APPPOOL\testpsreloservices" 
aspnet_regiis.exe -pa "MyProjectKeys" "NT AUTHORITY\NETWORK" 
4

偽装が有効になっている場合、RSAキーコンテナは、ネットワークサービスではなく、アプリケーションにアクセスするユーザーのIDを使用してアクセスされます。

偽装を無効にするか、アプリケーションにアクセスできるすべてのユーザーをキーコンテナのACLに追加する必要があります。

+1

Apparantly、私は1つのアカウントへのアクセスを与え、私のアプリケーションのアプリケーションプールは別のアカウントで実行されていました。正しいアカウントにアクセスできるようになるとすぐに機能しました。ありがとう! :) –

関連する問題