Frage Hinzufügen von MachineKey zu web.config auf Webfarm-Websites


Wir (unser IT-Partner) haben kürzlich einige DNS für eine Web-Farm-Site geändert, die wir haben, so dass die beiden Produktionsserver Round-Robin-DNS-Wechsel zwischen ihnen haben. Vor dieser Umstellung hatten wir nicht wirklich Probleme damit WebResource.axd Dateien. Seit dem Wechsel erhalten wir einen Fehler, wenn wir die öffentliche Live-URL aufrufen:

KryptographischeExzeption

Die Auffüllung ist ungültig und kann nicht entfernt werden.

Wenn wir die spezifischen Server selbst treffen, laden sie sich gut. Ich habe das Problem recherchiert und es scheint, dass sie, da sie Ressourcen zwischen zwei Servern teilen, konsistent sein müssen machineKey in dem web.config für jeden Server, so dass sie konsistent zwischen den beiden verschlüsseln und entschlüsseln können. Meine Fragen sind:

  1. Kann ich ein generieren? machineKey über ein Tool auf dem Server, oder muss ich dafür Code schreiben?
  2. Muss ich nur die hinzufügen machineKey zum web.config auf jedem Server oder denkst du, dass ich noch etwas tun muss, damit die beiden Server zusammenarbeiten? (Beide web.confighabe derzeit keine machineKey)

33
2017-10-04 13:29


Ursprung


Antworten:


Dies sollte beantworten:

Vorgehensweise: Konfigurieren von MachineKey in ASP.NET 2.0 - Überlegungen zur Bereitstellung von Webfarm

Hinweise zur Bereitstellung von Webfarmen

Wenn Sie Ihre Anwendung in einer Webfarm bereitstellen, müssen Sie sicherstellen, dass   Konfigurationsdateien auf jedem Server teilen denselben Wert für   validationKey und decryptionKey, die für Hashing und   Entschlüsselung jeweils. Dies ist erforderlich, da Sie dies nicht garantieren können   welcher Server wird aufeinanderfolgende Anfragen behandeln.

Bei manuell generierten Schlüsselwerten sollten die Einstellungen erfolgen   ähnlich wie im folgenden Beispiel.

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"       

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

Wenn Sie Ihre Anwendung von anderen Anwendungen auf der   gleichen Server, platzieren Sie die Datei in der Datei Web.config für jede   Anwendung auf jedem Server in der Farm. Stellen Sie sicher, dass Sie separat verwenden   Schlüsselwerte für jede Anwendung, aber duplizieren die Schlüssel jeder Anwendung   über alle Server in der Farm.

Kurz gesagt, richten Sie den Maschinenschlüssel unter folgendem Link ein: Einrichten eines Maschinenschlüssels - Orchard Documentation.

Einrichten des Computerschlüssels mithilfe des IIS-Managers

Wenn Sie Zugriff auf die IIS-Verwaltungskonsole für den Server haben, auf dem   Orchard ist installiert, es ist der einfachste Weg, einen Maschinenschlüssel einzurichten.

Starten Sie die Verwaltungskonsole und wählen Sie dann die Website aus. Öffne das   Maschinenschlüsselkonfiguration:    The IIS web site configuration panel

Das Maschinenschlüssel-Bedienfeld hat die folgenden Einstellungen:

The machine key configuration panel

Deaktivieren Sie "Zur Laufzeit automatisch generieren" für die Validierung   Schlüssel und der Entschlüsselungsschlüssel.

Klicken Sie auf "Schlüssel generieren" unter "Aktionen" auf der rechten Seite des Panels.

Klicken Sie auf "Übernehmen".

und füge die folgende Zeile hinzu web.config Datei in allen webservers unter system.web Tag, wenn es nicht existiert.

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

Bitte stellen Sie sicher, dass Sie eine permanente Sicherung der Maschinenschlüssel und haben web.config Datei


41
2017-10-04 13:53



Wenn Sie IIS 7.5 oder höher verwenden, können Sie den Computerschlüssel von IIS generieren und direkt in Ihrer Datei web.config speichern. Kopieren Sie dann innerhalb der Webfarm einfach die neue Datei web.config auf jeden Server.

  1. Öffnen Sie den IIS-Manager.
  2. Wenn Sie den MachineKey für alle Ihre Anwendungen generieren und speichern müssen, wählen Sie den Servernamen im linken Bereich. In diesem Fall ändern Sie die Root-Datei web.config (die im Ordner .NET Framework gespeichert ist). Wenn Sie MachineKey für eine bestimmte Website / Anwendung erstellen möchten, wählen Sie die Website / Anwendung im linken Bereich aus. In diesem Fall ändern Sie die web.config Datei Ihrer Bewerbung.
  3. Doppelklicken Sie auf das Symbol Maschinenschlüssel in ASP.NET-Einstellungen im mittleren Bereich:
  4. Der MachineKey-Abschnitt wird von Ihrer Konfigurationsdatei gelesen und in der Benutzeroberfläche angezeigt. Wenn Sie keinen bestimmten MachineKey konfiguriert haben und dieser automatisch generiert wird, sehen Sie folgende Optionen:
  5. Jetzt können Sie im rechten Bereich auf Schlüssel generieren klicken, um zufällige MachineKeys zu generieren. Wenn Sie auf Anwenden klicken, werden alle Einstellungen in der. Gespeichert web.config Datei.

Vollständige Details können @ gesehen werden Einfachste Möglichkeit, MachineKey zu generieren - Tipps und Tricks: ASP.NET, IIS und .NET-Entwicklung ...


14
2017-07-16 08:51



Achten Sie darauf, von der zu lernen Padding Oracle ASP.NET-Schwachstelle das ist gerade passiert (du hast den Patch angewendet, oder? ...) und benutzt geschützte Abschnitte zum Verschlüsseln des Maschinenschlüssels und jede andere sensible Konfiguration.

Eine alternative Möglichkeit besteht darin, sie in der Computer-Ebene web.config festzulegen, also nicht einmal im Website-Ordner.

Um es zu erzeugen mach es genau wie der verlinkte Artikel in Davids Antwort.


6
2017-10-04 16:37