我的头撞在墙上用这一个,可以做一些灵感。
我有一个.NET 4.5.2应用程序,它使用System.Messaging.MessageQueue向本地机器上经过身份验证的事务发送MSMQ消息。
在开发、测试和现场运行的Windows2008 R2服务器上,这都是非常出色的。我正处于迁移到Windows 2019的过程中,它不再工作了。它也不能在Windows 10桌面上工作。
当我试图向本地(或远程)发送一条消息时,它会默默地失败,并在事务处理死信队列中登陆,错误是:“签名无效”。
这方面的传统答案是:
未安装
在2008年的工作安装中,测试消息已正确标识发送方,使用SHA-512将身份验证设置为yes。
在死信队列中,发件人仍然被正确识别,但是它说身份验证是不存在的,并且是未知的散列。然而,生成消息的测试代码完全相同。
我唯一奇怪的是,在所有生产计算机中,由于以下原因,我无法“查看”用户证书:
无法获得
用户证书。错误:存在内部域服务错误。
尽管这种情况也发生在2008年的盒子里,但效果很好。我还可以通过按下“Registry……”在计算机上本地查看证书,并且我可以在AD用户下面的mSMQSignCertificates属性中看到数据。
所以,我完全不知道是什么导致了这一切。或者更重要的是,如何进一步推进。
发布于 2019-09-27 14:43:47
这个奇怪的现象确实是问题的一个症状,解决这个问题解决了这个问题。
我不知道为什么会发生这种情况,但看来Active用户对象对于MSMQ的证书变得不可读了。
深入解决方案在这个博客上:https://www.aligrant.com/web/blog/2019-09-27_msmq_the_signature_is_invalid。
总之:清除有问题的AD用户上的mSMQDigests和mSMQSignCertificates条目,并在每个使用它的服务器上重新注册现有的证书。
https://stackoverflow.com/questions/58102196
复制相似问题