在web场中添加machineKey到web.config

我们(真正的IT合作伙伴)最近改变了我们的一个网站养殖网站的一些DNS,以便两个生产服务器在两者之​​间进行循环DNS切换。 在这个开关之前,我们并没有真正遇到WebResource.axd文件的问题。 由于切换,当我们点击实时公开的URL,我们得到一个错误:

CryptographicException

填充无效,无法删除。

当我们打到特定的服务器本身,他们加载罚款。 我已经研究了这个问题,似乎是因为他们在两台服务器之间共享资源,所以我们需要在每台服务器的web.config都有一个一致的machineKey ,以便他们能够在两者之间一致地进行encryption和解密。 我的问题是:

  1. 我可以通过服务器上的工具生成一个machineKey ,还是我需要编写代码来完成这个工作?
  2. 我是否需要将machineKey添加到每个服务器上的web.config ,或者您认为我需要做其他任何事情来使这两个服务器一起工作吗? (两个web.config目前没有一个machineKey

这应该回答:

如何在ASP.NET 2.0中configurationMachineKey – Web场的部署注意事项

简而言之,要设置机器密钥,请参阅以下链接: 设置机器密钥 – 果园文档 。

并将以下行添加到system.web标记下的所有webserversweb.config文件中(如果它不存在)。

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

请确保您拥有机器密钥和web.config文件的永久备份

如果您使用的是IIS 7.5或更高版本,则可以从IIS生成计算机密钥,并将其直接保存到web.config中,然后将新的web.config复制到每个服务器。

  1. 打开IISpipe理器。
  2. 如果您需要为所有应用程序生成并保存MachineKey,请在左窗格中select服务器名称,在这种情况下,您将修改根web.config文件(位于.NET框架文件夹中)。 如果您的目的是为特定网站/应用程序创buildMachineKey,则从左窗格中select网站/应用程序。 在这种情况下,您将修改您的应用程序的web.config文件。
  3. 双击中间窗格中ASP.NET设置中的“机器密钥”图标:
  4. MachineKey部分将从configuration文件中读取并显示在UI中。 如果您没有configuration特定的MachineKey并自动生成,您将看到以下选项:
  5. 现在,您可以单击右侧窗格上的生成密钥来生成随机MachineKeys。 当你点击应用时,所有的设置将被保存在web.config文件中。

完整的详细信息可以看出@ 最简单的方法来生成MachineKey – 技巧和窍门:ASP.NET,IIS和.NET开发…

确保从刚刚发生的填充oracle asp.net漏洞 (你应用了补丁,对吧?)学习,并使用受保护的部分来encryption机器密钥和任何其他敏感configuration。

另一个select是在机器级web.config中设置它,所以它甚至不在网站文件夹中。

生成它就像David的答案中的链接文章一样。