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 wirklich keine Probleme mit 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 so, als würden sie machineKey zwischen zwei Servern teilen. machineKey müssen wir in der web.config für jeden Server einen konsistenten machineKey haben, damit sie konsistent zwischen beiden verschlüsseln und entschlüsseln können. Meine Fragen sind:

  1. Kann ich einen machineKey über ein Tool auf dem Server generieren oder muss ich dazu Code schreiben?
  2. Muss ich nur den machineKey zur web.config auf jedem Server hinzufügen oder denkst du, dass ich noch etwas tun muss, damit die beiden Server zusammenarbeiten? (Beide web.config haben zur Zeit keinen machineKey )

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 die Konfigurationsdateien auf jedem Server den gleichen Wert für validationKey und decryptionKey aufweisen, die für das Hashen bzw. für die Entschlüsselung verwendet werden. Dies ist erforderlich, da Sie nicht garantieren können, welcher Server sukzessive Anforderungen verarbeitet.

Bei manuell generierten Schlüsselwerten sollten die Einstellungen dem folgenden Beispiel ähneln.

  

Wenn Sie Ihre Anwendung von anderen Anwendungen auf demselben Server isolieren möchten, platzieren Sie sie in der Datei Web.config für jede Anwendung auf jedem Server in der Farm. Stellen Sie sicher, dass Sie für jede Anwendung separate Schlüsselwerte verwenden, aber die Schlüssel der einzelnen Anwendungen auf allen Servern in der Farm duplizieren.

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 installiert ist, ist dies der einfachste Weg zum Einrichten eines Computerschlüssels.

Starten Sie die Verwaltungskonsole und wählen Sie dann die Website aus. Öffnen Sie die Maschinenschlüsselkonfiguration: Das Konfigurationsfenster der IIS-Website

Das Maschinenschlüssel-Bedienfeld hat die folgenden Einstellungen:

Das Maschinenschlüssel-Konfigurationsfenster

Deaktivieren Sie “Automatisch zur Laufzeit generieren” für den validationsschlüssel und den Entschlüsselungsschlüssel.

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

Klicken Sie auf “Übernehmen”.

web.config Datei web.config in allen webservers unter system.web Tag system.web die folgende Zeile hinzu, falls sie nicht vorhanden ist.

  

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

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 web.config Datei web.config Ihrer Anwendung.
  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 web.config klicken, werden alle Einstellungen in der Datei web.config gespeichert.

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

Stellen Sie sicher, dass Sie von der Sicherheitslücke von oracle asp.net erfahren haben, die gerade passiert ist (Sie haben den Patch angewendet, richtig? …), und verwenden Sie geschützte Abschnitte, um den Computerschlüssel und andere sensible Konfigurationen zu verschlüsseln .

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.