Мы хотим зашифровать все файлы конфигурации нашего веб-приложения, которые мы развернем на сервере.Мы бы предпочли сделать это как шаг в нашем процессе сборки и включить предварительно зашифрованные файлы в MSI.
Это означает, что нашему серверу сборки (encryptor) и производственному серверу (decryptor) нужны одинаковые ключи,Итак, я пытаюсь сделать очень простой тест на данный момент.Зашифруйте Web.Config на MachineA - расшифруйте его на MachineB.Вот что я пытался протестировать до сих пор
Создайте новый контейнер пар ключей RSA на моем локальном компьютере.
aspnet_regiis -pc "MyContainer" -exp
Дайте разрешения ACL мне и пользователям NetworkService.
aspnet_regiis -pa "MyContainer" "MyDomain\My.Account"
aspnet_regiis -pa "MyContainer" "NT AUTHORITY\NETWORK SERVICE"
Экспорт этой пары ключей в XML-файл
aspnet_regiis -px "MyContainer" C:\MyContainer.xml -pri
Скопируйте этот файл в другойpc & import it
aspnet_regiis -pi "MyContainer" C:\MyContainer.xml
Дайте моему коллеге и его машинам права пользователя NetworkService на вновь импортированный файл
aspnet_regiis -pa "MyContainer" "MyDomain\My.Colleague"
aspnet_regiis -pa "MyContainer" "NT AUTHORITY\NETWORK SERVICE"
Затем я создал очень простой файл web.config на своем локальном компьютере..
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="SecretKey" value="ValueWeWantToHide" />
</appSettings>
<configProtectedData>
<providers>
<add name="SampleProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
keyContainerName="MyContainer"
useMachineContainer="true" />
</providers>
</configProtectedData>
</configuration>
Я могу довольно легко зашифровать и расшифровать раздел appSettings, используя команды.Они успешно шифруют и дешифруют, и зашифрованный раздел помечается правильным провайдером после шифрования (<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
)
aspnet_regiis -pef appSettings D:\testapp
and
aspnet_regiis -pdf appSettings D:\testapp
Однако, когда я копирую зашифрованный файл web.config на компьютер моих коллег и пытаюсь расшифровать его с помощьюкоманда выше, дешифрование не удается.Выдает очень бесполезную ошибку
Failed to decrypt using provider 'RSAProtectedConfigurationProvider'. Error message from provider: Bad Data
И вот я застрял.Я обнаружил пару схожих проблем на SO, но ничего конкретного, что конкретно решило бы их проблемы.Я где-то пропустил шаг.Я предполагаю, что мой ключ настроен правильно, так как я могу локально шифровать / дешифровать.Возможно ли, что я поднял импорт ключей или пропустил какой-то шаг на компьютере коллеги.Любая помощь приветствуется.