我收到错误
签名无效
从W2012服务器向W2008服务器发送消息时。消息在目标服务器上接收,但落入死信队列,并显示此错误消息。
同一工具能够从我的工作站成功将消息发送到同一个W2012服务器。
使用管理控制台,在计算机管理,项目消息队列,标签发件人,我可以看到邮件发件人帐户已被正确识别但未经过身份验证。
答案 0 :(得分:0)
发现问题与以前一样,但是有不同的信息。问题是发件人使用的是弱证书算法。
为了允许弱证书算法,我将此密钥添加到服务器计算机上的注册表中:
HKLM \ SOFTWARE \微软\ MSMQ \参数\安全\ WeakHashAlgorithms
并重新启动MSMQ服务。
然后我还需要在发件人机器上注册发件人帐户的证书。再次使用Microsoft管理控制台,打开消息队列的属性,使用User Certificate
选项卡删除并注册该帐户的证书。
然后可以使用Register
按钮再次注册证书。不确定,但我认为当从客户端收到消息时,MSMQ可以自动完成注册表。
希望将来帮助某人。
答案 1 :(得分:0)
我几乎要应用的其他解决方案是从队列中删除签名验证。 为此,请执行以下操作:
Validation
框 WCF的默认netmsmq msmqAuthenticationMode
为WindowsDomain
,以确保传输级安全,因此完全不使用安全性的绑定应为:
<binding name="noSecurity">
<security mode="None" />
</binding>
客户端和服务的两端安全设置必须相同。如果将服务配置为接收经过身份验证的消息,则WCF将不允许该服务接受未正确签名的消息。
如果已经有客户端在使用该队列,则可以为未签名的消息创建辅助队列。 WCF服务可以侦听多个队列。尽管如此,发送方和接收方必须具有队列ACL的权限才能使用它。
请注意,此操作将允许网络中的任何人将消息发送到队列。
有关更多信息,请阅读“ Allow anonymous users to send to the queue”页面主题。