2010-10-04 22 views
30

Nosotros (nuestro socio de TI realmente) hemos cambiado recientemente algunos DNS para un sitio web de cría que tenemos, de modo que los dos servidores de producción tienen conmutación DNS round-robin entre ellos. Antes de este cambio, realmente no teníamos problemas con los archivos WebResource.axd. Desde el cambio, cuando llegamos a la dirección URL pública en vivo, obtenemos un error:Agregar machineKey a web.config en sitios de la granja web

CryptographicException

Padding is invalid and cannot be removed.

Cuando llegamos a los servidores específicos a sí mismos, que se carguen bien. Investigué el problema y parece que, dado que comparten activos entre dos servidores, necesitamos un machineKey consistente en el web.config para cada servidor, de modo que puedan encriptar y descifrar de manera consistente entre los dos. Mis preguntas son:

  1. ¿Puedo generar un machineKey a través de una herramienta en el servidor, o tengo que escribir código para hacer esto?
  2. ¿Solo necesito agregar el machineKey al web.config en cada servidor o cree que tendré que hacer algo más para que los dos servidores funcionen juntos? (Ambos web.config 's actualmente no tienen un machineKey)
+0

Trate de publicación en http://serverfault.com/ – TimS

+2

@TimS - ok. Acabo de imaginar SO b/c de web.config con .NET, pero voy a migrar de forma adecuada. Gracias. –

+0

Np, podría obtener más respuesta allí. – TimS

Respuesta

37

Esto debe responder:

How To: Configure MachineKey in ASP.NET 2.0 - Web Farm Deployment Considerations

En resumen, para configurar la clave del equipo, consulte el siguiente enlace: Setting Up a Machine Key - Orchard Documentation.

y agregue la siguiente línea al archivo web.config en todas las etiquetas bajo system.web si no existe.

<machineKey 
    validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 
        AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"   
    decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" 
    validation="SHA1" 
    decryption="AES" 
/> 

Por favor asegúrese de que tiene una copia de seguridad permanente de las teclas de la máquina y web.config archivo

+0

Si no funciona, elimine 'validation =" SHA1 "decryption =" AES "' de la línea de código anterior, luego funciona bien. – John

6

Asegúrese de que aprender de la padding oracle asp.net vulnerability que acaba de pasar (se aplica el parche, ¿verdad? ...) y use protected sections to encrypt the machine key y cualquier otra configuración sensible.

Una opción alternativa es configurarlo en el nivel de máquina web.config, por lo que no está incluso en la carpeta del sitio web.

Para generarlo, hazlo igual que el artículo vinculado en la respuesta de David.

+0

@Mark contento de ayudar, voto favorable;) – eglasius

13

Si está utilizando IIS 7.5 o posterior, puede generar la clave del equipo desde IIS y guardarla directamente en su web.config, dentro de la granja de servidores web simplemente copie el nuevo web.config a cada servidor.

  1. Abra el administrador de IIS.
  2. Si necesita generar y guardar MachineKey para todas sus aplicaciones, seleccione el nombre del servidor en el panel izquierdo, en ese caso estará modificando el archivo raíz web.config (que se coloca en la carpeta .NET framework). Si su intención es crear MachineKey para un sitio web/aplicación específico, seleccione el sitio web/aplicación en el panel izquierdo. En ese caso, modificará el archivo web.config de su aplicación.
  3. Haga doble clic en el icono Clave del equipo en la configuración de ASP.NET en el panel central:
  4. La sección MachineKey se leerá de su archivo de configuración y se mostrará en la interfaz de usuario.Si no configuró una MachineKey específica y se genera automáticamente, verá las siguientes opciones:
  5. Ahora puede hacer clic en Generar claves en el panel derecho para generar MachineKeys aleatorias. Al hacer clic en Aplicar, todas las configuraciones se guardarán en el archivo web.config.

Detalles completos pueden verse @Easiest way to generate MachineKey – Tips and tricks: ASP.NET, IIS and .NET development…

Cuestiones relacionadas