2012-02-17 4 views
4

При применении шифрования мы получаем следующую ошибку (на веб-сайте asp.net).«Контейнер ключей RSA не может быть открыт» Ошибка даже после разрешения ACL (для некоторых пользователей)

Сообщение об ошибке Parser: не удалось расшифровать использование поставщика RsaProtectedConfigurationProvider. Сообщение об ошибке от поставщика: Контейнер ключей RSA не открывается.

Примечание: Пожалуйста, ознакомьтесь с приведенными ниже инструкциями, которые мы выполнили. (Мы получили разрешение ACL для NT Authority \ Network Service на NetFrameworkConfigurationKey)

Примечание: Мы используем проверку подлинности Windows Enabled и ASP.NET олицетворения Включено в IIS7. Он работает в Windows Server 2008. Управление доступом зависит от того, является ли пользователь частью разрешенной группы AD (которая будет указана в файле конфигурации).

Интересная часть состоит в том, что эта ошибка возникает, когда пользователи группы 1 (из местоположения1) обращаются к ней. Когда пользователи группы2 (из locatiob2) пытаются получить к нему доступ, ошибка не возникает.

Любые мысли о том, как их исправить?

Мы выполнили следующие шаги из нашего документа развертывания.

  1. Запуск командного окна в режиме администратора. (В Windows Server 2008 введите cmd и нажмите CTRL + SHIFT + ENTER)
  2. Перейдите в папку C: \ Windows \ Microsoft.Net \ Framework \ v4.0.30319 \ using команда каталога изменений (cd).
  3. Введите следующую команду для создания контейнера ключей RSA. aspnet_regiis -pc "NetFrameworkConfigurationKey" -exp
  4. Введите следующую (добавить ACL для доступа к RSA Key Container) и нажмите клавишу ввода aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority \ Network Service"
  5. Введите следующую (после замены выделенного текста на место развертывания службы) и нажмите клавишу ввода для шифрования строки соединений в Web.Config службы. aspnet_regiis.exe -pef "connectionStrings" "C: \ MyWCF \ ServiceName"
  6. Введите следующее (после замены выделенного текста местоположением, где расположен веб-сайт) и нажмите клавишу ввода, чтобы зашифровать строку подключений в Web-сайте Web.Config , aspnet_regiis.exe -pef "connectionStrings" "C: \ MyWeb \ WebsiteName"
  7. Введите следующее (после замены выделенного текста на место, где доступен файл web.config для веб-сайта) и нажмите enter, чтобы зашифровать sessionState значения в Web.Config веб-сайта. aspnet_regiis.exe -pef "system.web/sessionState" "C: \ MyWeb \ WebsiteName"
  8. Убедитесь, что строки подключения и значения SessionState зашифрованы.
  9. Проверьте следующую информацию в разделе configProtectedData в Machine.Config.

• Убедитесь, что 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 -not-be-open – Lijo

ответ

6

Ниже приведен подход, который я пробовал, который не связан с конфигурацией машины.

Примечание. Если пункт назначения находится в Windows Sever 2008, шаги шифрования должны выполняться в самой Windows Server 2008.

Выполняемые следующие коды в сервер А

Примечание: - Регистрация ключа

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

Примечание: - ПРЕДОСТАВЛЕНИЕ ДОСТУПА на сервере А только

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

экспортированный файл XML, содержащий RSA Key

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

Добавлено следующее web.config

<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> 

зашифрованного

aspnet_regiis -pef "connectionStrings" "E:\wmapps\webroot\myservice" -prov "RsaProtectedConfigurationProvider" 

скопировали зашифрованные файлы в B Server. Скопировал файл 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 будет обращаться идентификатор пользователя, получающего доступ к приложению --- не сетевая служба.

Вам либо нужно отключить олицетворение, либо добавить всех пользователей, которые могут получить доступ к приложению в ACL контейнера ключей.

+1

Очевидно, я предоставил доступ к одной учетной записи, а мой пул приложений приложений запущен в другой учетной записи. Как только я дал доступ к правильной учетной записи, она сработала. Благодаря! :) –

 Смежные вопросы

  • Нет связанных вопросов^_^