web-dev-qa-db-fra.com

Ajout de machineKey à web.config sur des sites de ferme Web

Nous (notre partenaire informatique vraiment) avons récemment changé certains DNS pour un site Web que nous avons, afin que les deux serveurs de production aient un DNS alternatif entre eux. Avant ce changement, nous n'avions pas vraiment de problèmes avec WebResource.axd des dossiers. Depuis le changement, lorsque nous atteignons l'URL publique en direct, nous obtenons une erreur:

CryptographicException

Le rembourrage n'est pas valide et ne peut pas être supprimé.

Lorsque nous atteignons les serveurs spécifiques eux-mêmes, ils se chargent correctement. J'ai fait des recherches sur le problème et il semble qu'ils partagent des actifs entre deux serveurs, nous devons avoir un machineKey cohérent dans le web.config pour chaque serveur afin qu'ils puissent chiffrer et déchiffrer de manière cohérente entre les deux. Mes questions sont:

  1. Puis-je générer un machineKey via un outil sur le serveur, ou dois-je écrire du code pour ce faire?
  2. Dois-je simplement ajouter le machineKey au web.config sur chaque serveur ou pensez-vous que je devrai faire autre chose pour que les deux serveurs fonctionnent ensemble? (Tous les deux web.config n'ont actuellement pas de machineKey)
44
Mark Ursino

Cela devrait répondre:

Comment: configurer MachineKey dans ASP.NET 2.0 - Considérations relatives au déploiement de la batterie de serveurs Web

Considérations relatives au déploiement de la batterie de serveurs Web

Si vous déployez votre application dans une batterie de serveurs Web, vous devez vous assurer que les fichiers de configuration sur chaque serveur partagent la même valeur pour validationKey et decryptionKey, qui sont utilisées respectivement pour le hachage et le déchiffrement. Ceci est nécessaire car vous ne pouvez pas garantir quel serveur traitera les demandes successives.

Avec des valeurs de clé générées manuellement, les paramètres doivent être similaires à l'exemple suivant.

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"       

decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>

Si vous souhaitez isoler votre application des autres applications sur le même serveur, placez le dans le fichier Web.config pour chaque application sur chaque serveur de la batterie de serveurs. Assurez-vous d'utiliser des valeurs de clé distinctes pour chaque application, mais dupliquez les clés de chaque application sur tous les serveurs de la batterie.

En bref, pour configurer la clé machine, reportez-vous au lien suivant: Configuration d'une clé machine - Documentation Orchard .

Configuration de la clé machine à l'aide de IIS Manager

Si vous avez accès à la console de gestion IIS pour le serveur sur lequel Orchard est installé, c'est le moyen le plus simple de configurer une clé d'ordinateur.

Démarrez la console de gestion, puis sélectionnez le site Web. Ouvrez la configuration de la clé machine: The IIS web site configuration panel

Le panneau de commande de la clé machine a les paramètres suivants:

The machine key configuration panel

Décochez "Générer automatiquement lors de l'exécution" pour la clé de validation et la clé de déchiffrement.

Cliquez sur "Générer des clés" sous "Actions" sur le côté droit du panneau.

Cliquez sur "Appliquer".

et ajoutez la ligne suivante au web.config fichier dans tous les webservers sous system.web tag s'il n'existe pas.

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

Veuillez vous assurer que vous disposez d'une sauvegarde permanente des clés de l'ordinateur et web.config fichier

54
BlackICE

Si vous utilisez IIS 7.5 ou version ultérieure, vous pouvez générer la clé machine à partir de IIS et l'enregistrer directement dans votre web.config, dans la batterie de serveurs Web, vous copiez simplement le nouveau web.config sur chaque serveur.

  1. Ouvrez le gestionnaire IIS.
  2. Si vous devez générer et enregistrer la MachineKey pour toutes vos applications, sélectionnez le nom du serveur dans le volet gauche, dans ce cas, vous allez modifier le fichier racine web.config (qui est placé dans le dossier du framework .NET). Si votre intention est de créer MachineKey pour un site Web/une application spécifique, sélectionnez le site Web/l'application dans le volet gauche. Dans ce cas, vous allez modifier le web.config fichier de votre candidature.
  3. Double-cliquez sur l'icône de la clé machine dans les paramètres ASP.NET dans le volet central:
  4. La section MachineKey sera lue à partir de votre fichier de configuration et affichée dans l'interface utilisateur. Si vous n'avez pas configuré de machineKey spécifique et qu'elle est générée automatiquement, vous verrez les options suivantes:
  5. Vous pouvez maintenant cliquer sur Générer des clés dans le volet droit pour générer des MachineKeys aléatoires. Lorsque vous cliquez sur Appliquer, tous les paramètres seront enregistrés dans le web.config fichier.

Tous les détails peuvent être consultés @ moyen le plus simple de générer MachineKey - Trucs et astuces: ASP.NET, IIS et développement .NET…

15
TheAlbear

Assurez-vous d'apprendre de la remplissage de la vulnérabilité Oracle asp.net qui vient de se produire (vous avez appliqué le correctif, non? ...) et utilisez sections protégées pour crypter la clé machine et toute autre configuration sensible.

Une autre option consiste à le définir dans le fichier Web.config au niveau de la machine, donc ce n'est même pas dans le dossier du site Web.

Pour le générer, faites-le comme l'article lié dans la réponse de David.

6
eglasius