Ошибка шифрования web.config

Я знаю, что ppl уже задавали вопросы о шифровании web.config.

im также пытается зашифровать мой тестовый файл конфигурации, но im получает эту ошибку.

aspnet_regiis -pef "connectionStrings" "C:\encryptedWeb.config" Шифрование раздела конфигурации... Невозможно открыть конфигурацию для физического пути "C:\EncryptedWeb.config". Ошибка!

Я просто хочу знать, каковы могут быть причины, по которым это не удалось.

Я получил ответ, это была проблема с readonly для web.config. После того, как я удалил readonly, он работал как шарм.

Ответы

Ответ 1

для команды "aspnet_regiis -pef" путь к файлу конфигурации - это физический путь (не виртуальный), а также путь к папке/папке, где находится web.config. Поэтому не следует указывать имя файла в пути, например.

если ваш путь web.config находится в D:\MyConfiguration\web.config, тогда при шифровании/расшифровке вы будете использовать его следующим образом:

шифровать:

aspnet_regiis -pef [sectionName] "D:\MyConfiguration"

расшифровывать:

aspnet_regiis -pdf [sectionName] "D:\MyConfiguration"

Ответ 2

Разделы CASE SENSITIVE.

Не добавляйте \ в конец пути (не требуется web.config).

Вам не нужно делать это прямо на сайте; вместо этого скопируйте файл в любое место.

шифрованный:

aspnet_regiis -pef "SECTIONTOENTRYPT" "d:\tempEnCrypt" -prov WhateverProviderYouAreUsing 

дешифрование:

aspnet_regiis -pdf "SECTIONTOENTRYPT" "d:\tempEncrypt"

Вы можете использовать это для шифрования app.config, просто переименуйте файл для шифрования/дешифрования как web.config

Ответ 3

Я знаю, что это старо, но у меня была одна и та же проблема, и ни один из других ответов не получил проблемы.

Вы не должны указывать имя файла в пути, и файл ДОЛЖЕН быть вызван web.config. Итак, для вашего примера, если ваш файл web.config на самом деле находится в C:\, вы должны поставить:

aspnet_regiis -pef "connectionStrings" "C:\"

и ваш файл ДОЛЖЕН называться web.config, поскольку инструмент будет искать только этот файл.

Для тех людей, чей файл не находится в C:\, вам нужно будет поместить полный путь к файлу (корень сайта). Вам также потребуется cd в каталог, содержащий файл aspnet_regiis.exe, или поместите полный путь к файлу для инструмента:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pef "ConnectionStrings" "C:\Ghron\Projects\Company\trunk\project1\project1"

Кроме того, некоторые из других ответов являются допустимыми точками - параметры чувствительны к регистру, поэтому ваши пути и имена разделов должны быть в правильном порядке. Я потратил около 20 минут, используя "ConnectionStrings" вместо "ConnectionStrings" (нижний регистр c).

Ответ 4

Взгляните на это, посмотрите, правильно ли настроили его.

http://msdn.microsoft.com/en-us/library/ms998283.aspx

Возможность указать сайт с   -site "SiteName"  в противном случае он будет использовать веб-сайт по умолчанию.

Ответ 5

Вы можете попробовать и использовать этот инструмент для шифрования вашей веб-конфигурации

Ответ 6

У меня была одна и та же проблема, и вот что сработало для меня:

  • добавить путь папки инструмента aspnet_regiis к переменной% PATH%. Это гарантирует, что инструмент доступен из любой папки в командной строке. См. Эту страницу для краткого объяснения того, как добавить% PATH% переменных: http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx
  • перейдите в свою веб-корневую папку (не знаю, нужно ли это, но то, куда я был перемещен, когда я выполнил команду)
  • выполните команду с аргументом -pe и аргументом -app следующим образом:

    aspnet_regiis -pe {секция для шифрования} -app "{путь из корневой папки в приложение, например:" /myappname ", использование кавычек}

Ответ 7

У меня такая же проблема при шифровании файла конфигурации с веб-сайта. Предоставить команду для шифрования с сайта, а не по умолчанию. Команда ниже работает, когда приложение находится в defaultwebsite: aspnet_regiis.exe -pe "connectionStrings" -app "/sitename" -prov "DataProtectionConfigurationProvider"

Ответ 8

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

Я также написал PowerShell script для шифрования/дешифрования без обращения к aspnet_regiis: https://github.com/mhenry1384/EncryptDecryptConfig

Ответ 9

Зашифровать/расшифровать web.config

  • Источник взят по этой ссылке https://mywebanecdotes.com/2016/09/17/encrypting-credentials-in-app-config-for-multiple-machines/
  • Во-первых, если у вас есть App.config, вам нужно переименовать в Web.config. И когда закончите, переименуйте его обратно. Это связано с тем, что aspnet_regiis.exe распознает только файл Web.config.
  • Затем создайте пользовательский атрибут SecuredSettings (любое имя подходит) либо в файле App.config, либо в файле Web.config.
<configuration>
<configSections>
   <section name="SecuredSettings" type="System.Configuration.NameValueSectionHandler" />
 </configSections>
 <SecuredSettings>
      <add key="pwrd" value="password" />
 </SecuredSettings>
 <configProtectedData>
   <providers>
     <add keyContainerName="MyCustomKeys"
              useMachineContainer="true"
              name="MyEncryptionProvider"
              type="System.Configuration.RsaProtectedConfigurationProvider"/>
   </providers>
 </configProtectedData>

</configuration>
  • В С# вы можете получить эти значения, как обычно. например:
var attr = ConfigurationManager.GetSection("SecuredSettings") as NameValueCollection;
var value = attr["pwrd"];
  • Остальное - это шифрование или дешифрование.
  • Запустите cmd от имени администратора и найдите C:\Windows\Microsoft.NET\Framework\v4.0.30319
  • "Создайте пару открытых/закрытых ключей RSA с конкретным именем контейнера. Они также должны быть помечены как экспортируемые (иначе какой смысл!)"
  • aspnet_regiis.exe -pc MyCustomKeys -exp
  • "Предоставить разрешения для учетных записей для доступа к контейнеру"
  • aspnet_regiis.exe -pa MyCustomKeys "NT AUTHORITY\NETWORK SERVICE"
  • "Следующая строка теперь будет шифровать ваш раздел (значение pwdr). Переключатель -pef сообщает приложению, что нужно искать файл web.config и использовать провайдер, объявленный в начале (который использует тип RsaProtectedConfigurationProvider)"
  • aspnet_regiis.exe -pef "SecuredSettings" "C:\DEV\ConsoleApp\DEX" -prov MyEncryptionProvider
  • Экспортируйте эти ключи на другой компьютер (при необходимости)
  • aspnet_regiis.exe -px MyCustomKeys keys.xml -pri он сгенерирует файл keys.xml в C:\Windows\Microsoft.NET\Framework\v4.0.30319
  • скопируйте этот файл и поместите его на другой компьютер, на котором вы хотите его использовать, в то же место C:\Windows\Microsoft.NET\Framework\v4.0.30319 и запустите:
  • aspnet_regiis -pi MyCustomKeys keys.xml
  • после вы можете удалить файл с обеих сторон.
  • Не забудьте переименовать Web.config в App.config, если вы сделали это в начале.
  • Чтобы расшифровать файл:
  • aspnet_regiis.exe -pdf "SecuredSettings" "C:\DEV\ConsoleApp\DEX"