MSMQ: подпись неверна - как решить? - PullRequest
0 голосов
/ 25 сентября 2019

Я ударился головой об стену с этим и мог бы вдохновиться.

У меня есть приложение .NET 4.5.2, которое использует System.Messaging.MessageQueue для отправки сообщений MSMQ в транзакциюзакрытая очередь с проверкой подлинности на локальном компьютере.

Это прекрасно работает в dev, test и на сервере Windows 2008 R2 в реальном времени.Я нахожусь в процессе миграции на Windows Server 2019, и он больше не работает.Он также не работает на рабочем столе Windows 10.

Когда я пытаюсь отправить сообщение локальному (или удаленному), оно молча завершается сбоем и попадает в очередь транзакционных недоставленных сообщений с ошибкой:«Подпись недействительна.».

Традиционные ответы на это:

  • MSMQ не установлен.A: это локальная доставка, поэтому не применимо
  • Срок действия сертификата истек.О: Обновленный и перерегистрированный сертификат через консоль MSMQ.
  • Отключите аутентификацию.A: работает, но оставляет очередь небезопасной, поэтому не опция
  • Включена поддержка слабого алгоритма.A: только применимые кросс-операционные системы для удаленных очередей.

В работающей установке 2008 года тестовое сообщение правильно идентифицировало отправителя с аутентификацией, установленной на да с SHA-512.

В очереди недоставленных сообщений отправитель по-прежнему правильно идентифицирован, но он говорит, что аутентификация - нет, и неизвестный хэш.Тем не менее, это тот же самый тестовый код, который генерирует сообщение.

Моя единственная другая странность в том, что на всех рабочих компьютерах я не могу "просмотреть" сертификат пользователя из-за:

Сертификат пользователя не может быть получен.Ошибка: есть внутренняя ошибка доменных служб Active Directory.

Хотя это также происходит на коробке 2008 и работает нормально.Я также могу просмотреть сертификат локально на компьютере, нажав «Зарегистрировать ...», и я могу видеть данные в атрибуте mSMQSignCertificates под пользователем AD.

Итак, я полностью застрял в том, что можетбыть причиной этого.Или, что еще важнее, как это сделать дальше.

1 Ответ

0 голосов
/ 27 сентября 2019

Странность действительно была признаком проблемы, решение которой решило эту проблему.

Я не уверен, почему это произошло / происходит, но кажется, что пользовательский объект Active Directory становится недоступным для MSMQ для сертификатов.

Подробное решение можно найти в этом блоге: https://www.aligrant.com/web/blog/2019-09-27_msmq_the_signature_is_invalid

В итоге: очистите записи mSMQDigests и mSMQSignCertificates для пользователя AD, в котором возникла проблема, и заново зарегистрируйте существующую запись.сертификаты на каждом сервере, который его использует.

...