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 machineKey
in de web.config
voor elke server nodig hebben, zodat ze kan consistent coderen en decoderen tussen de twee. Mijn vragen zijn:
- Kan ik een
machineKey
genereren via een tool op de server, of moet ik hiervoor code schrijven? - Moet ik alleen de
machineKey
toevoegen aan deweb.config
op elke server of denk je dat ik iets anders moet doen om de twee servers te maken samenwerken? (Beideweb.config
‘s hebben momenteel geenmachineKey
)
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.config
in alle webservers
onder de tag system.web
als 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.
- Open IIS-beheer.
- 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.config
van uw toepassing. - Dubbelklik op het computersleutelpictogram in de ASP.NET-instellingen in het middelste paneel:
- 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:
- 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.