Я ударился головой об стену с этим и мог бы вдохновиться.
У меня есть приложение .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.
Итак, я полностью застрял в том, что можетбыть причиной этого.Или, что еще важнее, как это сделать дальше.