C# · 12月 23, 2021

c# – 您在哪里将加密密钥放在面向公众的服务器上?

我在我的Web应用程序和服务之间使用NServiceBus和MSMQ,我需要能够加密消息有效负载,这样如果消息在Web服务器上本地排队(服务主机已关闭),则无法查看敏感数据.

由于Web服务器是面向公众的,因此我不仅需要加密可能被序列化到磁盘的数据,而且我也无法将加密密钥存储在Web服务器上.

我已经考虑使用DPAPI存储密钥,但由于密钥将存储在主机上,我还不知道是否违反了要求.我考虑的另一个选项是,当Web应用程序启动时,它可以从服务请求密钥并在应用程序池的生命周期内将其保存在内存中.

我以前没有必要处理这种级别的加密要求,并希望了解其他人正在做什么,并获得有关上述想法的一些反馈.

解决方法 您可以覆盖NServiceBus从中提取其加密密钥的源 – 这在文档中描述: http://docs.particular.net/nservicebus/security/encryption

这样,您可以避免将此敏感信息驻留在DMZ上.