Контейнер ключа RSA не может быть открыт после импорта и прав доступа для всех (добавлено изображение)
Я пытаюсь зашифровать строку подключения в приложении Windows, которое распространяется на несколько серверов (я думаю, что это похоже на веб-ферму). Строка подключения на самом деле находится в отдельном файле с именем "ConnectionStrings.config". Я делаю это как вход в систему с удаленного рабочего стола, используя мою учетную запись домена / пользователя, которая в настоящее время имеет права администратора.
Ссылка моей строки подключения на внешний файл "ConnectionStrings.config"
<connectionStrings configSource="ConnectionStrings.config"/>
Скопируйте ConnectionStrings.config в новый файл с именем web.config
- Добавьте открытие и закрытие
<configuration>
теги - Добавить
<configProtectedData>
раздел Теперь мой web.config выглядит так:
<!-- This file contains the connection string referenced by the app.config file --> <configuration> <configProtectedData> <providers> <add keyContainerName="SecurityKeys" useMachineContainer="false" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" name="AppEncryptionProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </configProtectedData> <connectionStrings> <add name="MyConnectionString" connectionString="Data Source=MyServer; Initial Catalog=MyDatabase;Persist Security Info=True;User ID=**MyId**;Password=**MyPwd**" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
Создайте контейнер в консоли администратора
E:\Program Files\MyApplication>aspnet_regiis -pc "SecurityKeys" -exp Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408 Administration utility to install and uninstall ASP.NET on the local machine. Copyright (C) Microsoft Corporation. All rights reserved. Creating RSA Key container... Succeeded!
Зашифруйте файл web.config в консоли администратора.
E:\Program Files\MyApplication>aspnet_regiis -pef "connectionStrings" "." -prov "AppEncryptionProvider" Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408 Administration utility to install and uninstall ASP.NET on the local machine. Copyright (C) Microsoft Corporation. All rights reserved. Encrypting configuration section... Succeeded!
Переместите раздел обратно в файл конфигурации приложений.
Скопируйте зашифрованный раздел обратно в файл ConnectionStrings.config:
<connectionStrings configProtectionProvider="AppEncryptionProvider"> <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>Rsa Key</KeyName> </KeyInfo> <CipherData> <CipherValue>**crazyencryptionstring!**</CipherValue> </CipherData> </EncryptedKey> </KeyInfo> <CipherData> <CipherValue>**anothercrazystring!**</CipherValue> </CipherData> </EncryptedData> </connectionStrings>
Запустите приложение - НЕТ ПРОБЛЕМ!!!!
Экспорт ключей в консоли администратора
E:\Program Files\MyApplication>aspnet_regiis -px "SecurityKeys" ".\SecurityKeys.xml" -pri Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408 Administration utility to install and uninstall ASP.NET on the local machine. Copyright (C) Microsoft Corporation. All rights reserved. Exporting RSA Keys to file... Succeeded!
Скопируйте файл ключа на другой сервер с приложением.
Импортируйте ключ в консоль администратора
E:\Program Files\MyApplication>aspnet_regiis -pi "SecurityKeys" "SecurityKeys.xml" Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408 Administration utility to install and uninstall ASP.NET on the local machine. Copyright (C) Microsoft Corporation. All rights reserved. Importing RSA Keys from file.. Succeeded!
Скопируйте новый файл ConnectionStrings.config, который, как я думал, будет использовать импортированный ключ
Запустите приложение (тот же логин, что и при импорте) - UGH, Failed
Failed to decrypt using provider 'AppEncryptionProvider'. Error message from the provider: The RSA key container could not be opened. (E:\Program Files\MyApplication\ConnectionStrings.config line 4)
Запустите приложение от имени администратора - Не удалось получить тот же результат.
Изменить разрешения, чтобы быть очень открытым
E:\Program Files\MyApplication>aspnet_regiis -pa "SecurityKeys" "EVERYONE" -full Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408 Administration utility to install and uninstall ASP.NET on the local machine. Copyright (C) Microsoft Corporation. All rights reserved. Adding ACL for access to the RSA Key container... Succeeded!
Запустите его и.... та же проблема
Попросите ТАК помочь!
БОЛЬШЕ ИНФОРМАЦИИ
Хорошо, возможно, этот вывод из ProcMon даст дальнейшее понимание кому-то, чтобы помочь мне. Я добавил фильтрацию и сравнил рабочую незашифрованную версию с зашифрованной сбойной версией. Для фильтров установлено значение Включить только мое приложение и Исключить любой из следующих результатов:
успех
Имя не найдено
Конец файла
Reparse
Файл заблокирован только читателями
Переполнение буфера.
Это то, что у меня осталось - все криптовалюты!!! Очевидно, что dm0747 это я, и у приложения есть файлы в E:\POWERWeb\General