obtener net encriptar connectionstrings connectionstring conexion cadena asp app vb.net cryptography app-config cryptographicexception

vb.net - net - App.config cadena de conexión Error de protección



obtener cadena de conexion app.config c# (4)

Así que lo hice funcionar.

  1. eliminó la cuenta de usuarios antiguos de la computadora portátil
  2. restablecer app.config para tener una sección no protegida
  3. archivo clave eliminado de todas las teclas de la máquina de los usuarios
  4. ejecutó la aplicación y le permitió proteger la sección

Pero todo esto lo hizo funcionar para este usuario.

AHORA necesito saber qué tengo que hacer para cambiar el código y proteger la sección para que varios usuarios en una PC puedan usar la aplicación. Aquí vengo Virtual PC (¡bien después de las vacaciones a WDW mañana y hasta el próximo miércoles)!

cualquier consejo para ayudarme a orientarme en la dirección correcta, ya que no tengo mucha experiencia en este tipo de encriptación RSA.

Me encuentro con un problema que tuve antes; no puedo encontrar mi referencia sobre cómo resolverlo.

Aquí está el problema. Encriptamos la sección de cadenas de conexión en la aplicación.config para nuestra aplicación cliente usando el siguiente código:

config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) If config.ConnectionStrings.SectionInformation.IsProtected = False Then config.ConnectionStrings.SectionInformation.ProtectSection(Nothing) '' We must save the changes to the configuration file.'' config.Save(ConfigurationSaveMode.Modified, True) End If

El problema es que tuvimos un vendedor de permiso. La computadora portátil anterior va a un nuevo vendedor y bajo el inicio de sesión del nuevo usuario, cuando intenta hacer esto obtenemos un error. El error es:

Unhandled Exception: System.Configuration.ConfigurationErrorsException: An error occurred executing the configuration section handler for connectionStrings. ---> System.Configuration.ConfigurationErrorsException: Failed to encrypt the section ''connectionStrings'' using provider ''RsaProtectedConfigurationProvider''. Error message from the provider: Object already exists. ---> System.Security.Cryptography.CryptographicException: Object already exists


Encontré una solución más elegante que en mi respuesta original para mí. Encontré que si acababa de iniciar sesión como el usuario que originalmente instaló la aplicación y provocó que las cadenas de conexiones del archivo de configuración se encriptaran y vaya al directorio .net framework en un indicador de comandos de commadn y ejecute

aspnet_regiis -pa "NetFrameworkConfigurationKey" "{domain}/{user}"

otorgó permiso al otro usuario para acceder al contenedor de la clave de cifrado RSA y luego funciona para el otro usuario (s).

Solo quería agregarlo aquí porque pensé que había escrito este tema en nuestro blog de desarrollo pero lo encontré aquí, así que en caso de que necesite buscarlo nuevamente, estará aquí. Agregará un enlace a nuestro punto de blog dev en este hilo también.


Suena como un problema de permisos. El (nuevo) usuario en cuestión tiene permisos de escritura para el archivo app.config? ¿El usuario anterior era un administrador local o un usuario avanzado que podría haber enmascarado este problema?


http://blogs.msdn.com/mosharaf/archive/2005/11/17/protectedConfiguration.aspx#1657603

copiar y pegar: D

Lunes, 12 de febrero de 2007 12:15 a.m. por Naica

re: Cifrado de archivos de configuración con configuración protegida

Aquí hay una lista de todos los pasos que he hecho para encriptar dos secciones en mi PC y luego implementarlas en WebServer. Quizás ayudará a alguien ...

  1. Para crear un contenedor de clave RSA a nivel de máquina

    aspnet_regiis -pc "DataProtectionConfigurationProviderKeys" -exp

  2. Agregue esto a web.config antes de la sección connectionStrings:

    <add name="DataProtectionConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" keyContainerName="DataProtectionConfigurationProviderKeys" useMachineContainer="true" />

    ¡No te pierdas el <clear /> desde arriba! Importante cuando juegas con encripting / decripting muchas veces

  3. Marca para tener esto en la parte superior del archivo Web.Config. Si falta agregarlo:

    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

  4. Guarde y cierre el archivo Web.Config en VS (¡muy importante!)

  5. En la ventana del símbolo del sistema (mi PC local) vaya a:

    C: / WINNT / Microsoft.NET / Framework / v2.0.50727

  6. Cifre: (¡Tenga en cuenta Cambiar la ruta de acceso físico de su Aplicación, o use la opción -app y proporcione el nombre del directorio virtual para la aplicación!). Debido a que utilicé VS en mi PC, preferí la opción siguiente. La ruta es la ruta a Web.config archivo)

    aspnet_regiis -pef "connectionStrings" "c: / Bla / Bla / Bla" -prov "DataProtectionConfigurationProvider"

    aspnet_regiis -pef "system.web / membership" "c: / Bla / Bla / Bla" -prov "DataProtectionConfigurationProvider"

  7. Para descifrar (¡si es necesario!):

    aspnet_regiis -pdf "connectionStrings" "c:/Bla/Bla/Bla" aspnet_regiis -pdf "system.web/membership" "c:/Bla/Bla/Bla"

  8. Eliminar contenedor de claves (¡si es necesario!)

    aspnet_regiis -pz "DataProtectionConfigurationProviderKeys"

  9. Guarde la clave anterior en el archivo xml para exportarlo de su PC local al servidor web (UAT o producción)

    aspnet_regiis -px "DataProtectionConfigurationProviderKeys" /temp/mykeyfile.xml -pri

  10. Importe el contenedor de claves en los servidores de WebServer:

    aspnet_regiis -pi "DataProtectionConfigurationProviderKeys" /temp/mykeyfile.xml

  11. Otorgar acceso a la clave en el servidor web

    aspnet_regiis -pa "DataProtectionConfigurationProviderKeys" "DOMAIN/User"

    Vea en IIS al usuario de ASP.NET o use:

    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name

  12. Eliminar Conceder acceso a la clave en el servidor web (¡Solo si es necesario!)

    aspnet_regiis -pr "DataProtectionConfigurationProviderKeys" "Domain/User"

  13. Copie y pegue en WebServer el archivo Web.config encriptado.