我们(我们的IT合作伙伴真的)最近为我们拥有的网络养殖网站更改了一些DNS,因此两台生产服务器之间进行了循环DNS切换。在此切换之前,我们确实没有WebResource.axd
个文件的问题。自切换以来,当我们点击实时公共URL时,我们收到错误:
CryptographicException
填充无效,无法删除。
当我们点击特定服务器本身时,它们会很好地加载。我研究了这个问题,看起来因为他们在两台服务器之间共享资产,我们需要在每个服务器的machineKey
中保持一致web.config
,这样他们就可以在两者之间一致地加密和解密。我的问题是:
machineKey
,还是需要编写代码才能执行此操作?machineKey
添加到每台服务器上的web.config
,或者您认为我还需要做其他任何事情才能让两台服务器协同工作? (web.config
目前都没有machineKey
)答案 0 :(得分:53)
这应该回答:
How To: Configure MachineKey in ASP.NET 2.0 - Web Farm Deployment Considerations
Web场部署注意事项
如果在Web场中部署应用程序,则必须确保该应用程序 每台服务器上的配置文件共享相同的值 validationKey和decryptionKey,用于散列和 分别解密。这是必需的,因为您无法保证 哪个服务器将处理连续的请求。
使用手动生成的键值,设置应该 类似于以下示例。
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES" />
如果要将应用程序与其他应用程序隔离开来 相同的服务器,将其放在Web.config文件中 应用程序在服务器场中的每个服务器确保您单独使用 每个应用程序的键值,但复制每个应用程序的键 遍布服务器场中的所有服务器。
简而言之,要设置机器密钥,请参阅以下链接: Setting Up a Machine Key - Orchard Documentation
使用IIS管理器设置计算机密钥
如果您有权访问服务器所在的IIS管理控制台 安装了Orchard,这是设置机器密钥的最简单方法。
机器键控制面板具有以下设置:
取消选中“在运行时自动生成”以进行验证 密钥和解密密钥。
点击面板右侧“操作”下的“生成密钥”。
点击“应用”。
并将以下行添加到web.config
标记下webservers
标记下的system.web
文件中。
<machineKey
validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>
请确保您拥有机器密钥和web.config
文件
答案 1 :(得分:15)
如果您使用的是IIS 7.5或更高版本,则可以从IIS生成计算机密钥并将其直接保存到web.config中,然后在Web场中将新的web.config复制到每个服务器。
web.config
文件。web.config
文件中。完整详细信息可以在Easiest way to generate MachineKey – Tips and tricks: ASP.NET, IIS and .NET development…
看到答案 2 :(得分:6)
请务必向刚刚发生的padding oracle asp.net vulnerability学习(您应用了修补程序,对吗?...)并使用protected sections to encrypt the machine key和任何其他敏感配置。
另一种选择是在机器级别web.config中设置它,因此它甚至不在网站文件夹中。
为了生成它,就像大卫回答的链接文章一样。