Развертывание строки подключения, зашифрованной с помощью RSAProtectedConfigurationProvider в app.config - PullRequest
4 голосов
/ 23 февраля 2012

Если разработчик зашифровывает раздел app.config строки подключения, используя RSAProtectedConfigurationProvider, на своем компьютере, и впоследствии он развертывается на рабочей станции пользователя, может ли рабочая станция этого пользователя (или сервер, в этом отношении) расшифровывать строку подключения автоматически?

Требуется ли какой-либо экспорт / установка ключа?Как это работает? Я понимаю, что это не пуленепробиваемый. Я ищу совет относительно того, будет ли развертывание простым и / или работать с такой зашифрованной строкой соединения.

1 Ответ

7 голосов
/ 23 февраля 2012

Это возможно.Для этого есть API (посмотрите на пространство имен System.Security.Cryptography) или из командной строки вы можете использовать aspnet_regiis:

aspnet_regiis -pc -exp  : create an exportable key pair
aspnet_regiis -px : export an RSA key pair to an XML file
aspnet_regiis -pi : import an RSA key pair from an XML file
aspnet_regiis -pa : add access for an account to a key container

Конечно, при использовании шифрования вы просто заменяете проблему защитыданные (ваша строка подключения) с помощью проблемы защиты ключа.

В вашем примере, как вы знаете, поскольку вы говорите, что он не пуленепробиваемый, пользователю потребуется доступ к контейнеру ключей, чтобы он мог расшифровать зашифрованную строку подключения.

Кроме того, любой, кто получит XML-файл, содержащий экспортированную пару ключей, сможет сделать это.

ОБНОВЛЕНИЕ

Развертываниепроцедура будет выглядеть примерно так:

  • Создание экспортируемого ключа на рабочей станции разработчика (aspnet_regiis -pc -exp)
  • Шифрование раздела конфигурации на рабочей станции разработчика с помощью этого ключа
  • Экспорт ключа в файл XML (aspnet_regiis -px)
  • Копирование файла XML на целевой компьютер
  • Импорт ключа из файла XML на целевом компьютере (aspnet_regiis -pi)
  • Предоставить учетным записям пользователей доступ для чтения ключа на целевом компьютере (aspnet_regiis -pa)

Разделы, зашифрованные с использованием защищенного поставщика конфигурации, такого как RSAProtectedConfigurationProvider, будут расшифрованы автоматическипри условии, что удостоверение Windows, под которым выполняется приложение, имеет разрешение на чтение для контейнера ключа RSA.

...