MSMQ:死信队列中的“签名无效”

问题描述 投票:1回答:2

我收到了错误

签名无效

从W2012服务器向W2008服务器发送消息时。消息在目标服务器上接收,但落入死信队列,并显示此错误消息。

同一工具能够从我的工作站成功将消息发送到同一W2012服务器。

使用管理控制台,在计算机管理,项目消息队列,选项卡发件人,我可以看到消息发件人帐户已正确识别但未经过身份验证。

wcf msmq
2个回答
0
投票

找出问题与以前一样,但有不同的信息。问题是发件人使用弱证书算法。

为了允许弱证书算法,我将此密钥添加到服务器计算机上的注册表:

HKLM \ SOFTWARE \微软\ MSMQ \参数\安全\ WeakHashAlgorithms

并重新启动MSMQ服务。

然后我还需要在发件人机器上注册发件人帐户的证书。再次使用Microsoft管理控制台,打开消息队列的属性,使用User Certificate选项卡删除并注册该帐户的证书。

然后可以使用Register按钮再次注册证书。不确定,但我认为当从客户端收到消息时,MSMQ可以自动完成注册表。

希望这能帮助将来的某个人。


0
投票

我几乎要添加的其他解决方案是从队列中删除签名验证。为此,请执行以下操作:

  • 在队列属性窗口中,取消选中Validation
  • 在属性窗口的安全性选项卡中,为用户ANONYMOUS LOGON添加要发送(默认)的权限。
  • WCF默认netmsmq msmqAuthenticationMode是用于传输级安全性的WindowsDomain,因此要在所有绑定中不使用安全性应该是: <binding name="noSecurity"> <security mode="None" /> </binding> 安全设置必须在两端,客户端和服务中相同。如果服务是配置以接收经过身份验证的消息,则WCF将不允许服务接受未正确签名的消息。 如果已有客户端使用该队列,则可以为非签名消息创建辅助队列。 WCF服务可以侦听多个队列。但是,发送方和接收方必须拥有队列ACL的权限才能使用它。

请注意,此操作将允许网络中的任何人向队列发送消息。

有关更多信息,请阅读“Allow anonymous users to send to the queue”页面主题。

© www.soinside.com 2019 - 2024. All rights reserved.