6

Tiene un problema con el cifrado. Otorgué permisos completos a todos los usuarios a las carpetas de RSA. HiceWeb.config Error de cifrado

C:\>aspnet_regiis -pe "appSettings" -location "web.config" -prov "RsaProtectedCo 
nfigurationProvider" 
Encrypting configuration section... 
An error occurred executing the configuration section handler for appSettings. 

Failed to encrypt the section 'appSettings' using provider 'RsaProtectedConfigur 
ationProvider'. Error message from the provider: Object already exists. 

Failed! 

Entonces hice

C:\>aspnet_regiis -pa "NetFrameworkConfigurationKey" "administrator" 
Adding ACL for access to the RSA Key container... 
The RSA key container was not found. 
Failed! 

Seguido por

C:\>aspnet_regiis -pc "NetFrameworkConfigurationKey" -exp 
Creating RSA Key container... 
The RSA key container could not be opened. 
Failed! 

Nada está trabajando para mí.

¿Alguien puede ayudar?

Gracias

Respuesta

1
C:\>aspnet_regiis -pe "appSettings" -location "web.config" 
     -prov "RsaProtectedConfigurationProvider" 

En esta línea de su ubicación es incorrecta. Cuando utiliza el -pd, la ubicación del conmutador se basa en las rutas de aplicación de IIS y se asume que web.config es el punto de cifrado.

Así por ejemplo, si tiene una aplicación llamada "Sitio Web 1" y otro llamado "Sitio Web 2" en IIS, y desea que el web.config en el "Sitio Web 1" a cifrar se usaría esta línea:

C:\>aspnet_regiis -pe "appSettings" -location "Website 1" 
     -prov "RsaProtectedConfigurationProvider" 

Personalmente, me pareció más fácil usar el interruptor -pef ya que puedo señalar directamente el directorio físico de la aplicación web.

Siga el tutorial de MSDN en Encrypting Configuration Information Using Protected Configuration. Lo he usado varias veces y todavía no he tenido problemas para hacer encyrption.

+0

Gracias por su respuesta. C: \> aspnet_regiis -pe "appSettings" -location "web.config" -prov "RsaProtectedConfigurationProvider" He hecho esto en varias otras máquinas. Funciona. Entonces, el problema no es la línea de comando. El problema es la clave. Algo está mal en esta máquina específica con respecto a la clave. – BKarms

1

Debe cambiar el "administrador" a cualquier cuenta en la que se esté ejecutando su servicio ASP.NET. Porque, lo más probable es que no esté ejecutando ASP.NET como cuenta de servicio de administrador. Si es así, entonces debe reconsiderar su decisión.

Por ejemplo, esto es lo que utilizo:

aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Network Service" 

o

aspnet_regiis -pa "NetFrameworkConfigurationKey" "ASPNET" 

A continuación, para el cifrado, utilizo:

aspnet_regiis -pef "connectionStrings" 

o

aspnet_regiis -pef "appSettings" 
+0

Gracias por su respuesta. aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority \ Network Service" o aspnet_regiis -pa "NetFrameworkConfigurationKey" "ASPNET" No importa qué cuenta proporcione. Devuelve un mensaje de falla. Agregar ACL para acceder al contenedor de claves RSA ... No se encontró el contenedor de claves RSA. ¡Ha fallado! – BKarms

9

que estaba recibiendo el mismo problema con este defecto:

aspnet_regiis -PA "NetFrameworkConfigurationKey" "{Domain} {nombre de usuario}"

La línea anterior regresaba "El contenedor de claves RSA no era encontró."

Para solucionar este problema, tuve que ejecutar el símbolo del sistema como administrador (abra Inicio> Accesorios> luego haga clic con el botón derecho en Símbolo del sistema y seleccione Ejecutar como administrador ...). Tuve que hacer esto aunque mi cuenta era una cuenta de administrador.

+1

Ejecutar el símbolo del sistema como administrador solucionó este problema por mí. – mkchandler

0

Tenía que encontrar la carpeta donde están instalados los certs y asumir la propiedad/dar permisos antes de que los errores con los comandos anteriores desaparezcan. Los errores indicaron que no se pudo encontrar el contenedor de claves, pero realmente era solo que no tenía permisos para el certificado. En mi caso, heredé una máquina de desarrollo de otra persona y necesitaba darme permisos a los archivos antes de poder ejecutar los comandos necesarios.

Tenía la esperanza de dar una respuesta más detallada con las ubicaciones de la carpeta cert, los pasos detallados, etc. pero no he tenido tiempo y solo quería observar lo que tenía que hacer en mi escenario.