MachineKey toevoegen aan web.config op web-farm sites

Wij (eigenlijk onze IT-partner) hebben onlangs wat DNS gewijzigd voor een webfarmed-site die we hebben, zodat de twee productieservers round-robin DNS-switching tussen hen hebben. Voorafgaand aan deze overstap hadden we niet echt problemen met WebResource.axd-bestanden. Sinds de omschakeling, wanneer we de live openbare URL bereiken, krijgen we een foutmelding:

CryptographicException

Opvulling is ongeldig en kan niet worden verwijderd.

Als we de specifieke servers zelf raken, laden ze prima. Ik heb het probleem onderzocht en het lijkt erop dat, aangezien ze activa delen tussen twee servers, we een consistente machineKeyin de web.configvoor elke server nodig hebben, zodat ze kan consistent coderen en decoderen tussen de twee. Mijn vragen zijn:

  1. Kan ik een machineKeygenereren via een tool op de server, of moet ik hiervoor code schrijven?
  2. Moet ik alleen de machineKeytoevoegen aan de web.configop elke server of denk je dat ik iets anders moet doen om de twee servers te maken samenwerken? (Beide web.config‘s hebben momenteel geen machineKey)

Antwoord 1, autoriteit 100%

Dit zou moeten antwoorden:

How To: MachineKey configureren in ASP.NET 2.0 – Web Farm-implementatie Overwegingen

Overwegingen bij de implementatie van webfarms

Als u uw toepassing in een webfarm implementeert, moet u ervoor zorgen dat de
configuratiebestanden op elke server delen dezelfde waarde voor:
validationKey en decryptionKey, die worden gebruikt voor hashing en
respectievelijk ontsleutelen. Dit is vereist omdat u niet kunt garanderen
welke server opeenvolgende verzoeken zal behandelen.

Bij handmatig gegenereerde sleutelwaarden moeten de instellingen:
vergelijkbaar zijn met het volgende voorbeeld.

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"       
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>

Als u uw toepassing wilt isoleren van andere toepassingen op de
dezelfde server, plaats de in het Web.config-bestand voor elke
applicatie op elke server in de farm. Zorg ervoor dat u aparte
sleutelwaarden voor elke toepassing, maar dupliceer de sleutels van elke toepassing
op alle servers in de farm.

Kortom, raadpleeg de volgende link om de machinesleutel in te stellen:
Een machinesleutel instellen – Orchard-documentatie.

De computersleutel instellen met IIS Manager

Als u toegang heeft tot de IIS-beheerconsole voor de server waar
Orchard is geïnstalleerd, het is de gemakkelijkste manier om een machinesleutel in te stellen.

Start de beheerconsole en selecteer vervolgens de website. Open de
configuratie van de machinesleutel:

Het bedieningspaneel van de machinetoets heeft de volgende instellingen:

Deselecteer “Automatisch genereren tijdens runtime” voor zowel de validatie
sleutel en de decoderingssleutel.

Klik op ‘Sleutels genereren’ onder ‘Acties’ aan de rechterkant van het paneel.

Klik op “Toepassen”.

en voeg de volgende regel toe aan het bestand web.configin alle webserversonder de tag system.webals deze niet bestaat.

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

Zorg ervoor dat u een permanente back-up hebt van de machinesleutels en het web.config-bestand


Antwoord 2, autoriteit 28%

Als u IIS 7.5 of hoger gebruikt, kunt u de machinesleutel van IIS genereren en deze rechtstreeks opslaan in uw web.config, binnen de webfarm kopieert u vervolgens de nieuwe web.config naar elke server.

  1. Open IIS-beheer.
  2. Als u de MachineKey voor al uw toepassingen moet genereren en opslaan, selecteert u de servernaam in het linkerdeelvenster, in dat geval wijzigt u het rootweb.config-bestand (dat in de .NET Framework-map wordt geplaatst). Als het uw bedoeling is om MachineKey te maken voor een specifieke website/toepassing, selecteert u de website/toepassing in het linkerdeelvenster. In dat geval wijzigt u het bestand web.configvan uw toepassing.
  3. Dubbelklik op het computersleutelpictogram in de ASP.NET-instellingen in het middelste paneel:
  4. De sectie MachineKey wordt uit uw configuratiebestand gelezen en weergegeven in de gebruikersinterface. Als u geen specifieke MachineKey heeft geconfigureerd en deze automatisch wordt gegenereerd, ziet u de volgende opties:
  5. Nu kunt u in het rechterdeelvenster op Sleutels genereren klikken om willekeurige MachineKeys te genereren. Wanneer u op Toepassen klikt, worden alle instellingen opgeslagen in het bestand web.config.

Volledige details zijn te zien @ Eenvoudigste manier om MachineKey te genereren – Tips en trucs: ASP.NET, IIS en .NET ontwikkeling…


Antwoord 3, autoriteit 12%

Zorg ervoor dat u leert van de het opvullen van Oracle asp.net-kwetsbaarheiddie zojuist is opgetreden (je hebt de patch toegepast, toch? …) en gebruik beschermde secties om de machinesleutel te versleutelenen elke andere gevoelige configuratie.

Een alternatieve optie is om het op machineniveau web.config in te stellen, dus het staat niet eens in de websitemap.

Om het te genereren, doet u het net zoals het gelinkte artikel in het antwoord van David.

Other episodes