Я пытаюсь отправить сообщение в MSMQ с помощью WCF. Я хочу использовать безопасность транспорта и подписывать сообщения. Однако, когда я устанавливаю учетные данные клиентского сертификата и пытаюсь отправить сообщение, возникает ошибка: «Произошла ошибка при отправке в очередь: недействителен сертификат пользователя (-1072824276, 0xc00e002c)». Сертификат хранится в LocalMachine \ My location и имеет доступ только для чтения, доступный для процесса ASPNET.Сертификат клиента WCF недействителен
ответ
Вот две общие причины, сертификат считается «недействительным»:
Вы не имеете закрытый ключ, связанный с сертификатом. Если у вас нет закрытого ключа, вам необходимо повторно установить сертификат с помощью закрытого ключа или получить новый сертификат, для которого у вас есть закрытый ключ.
Сертификат выдается центром сертификации, которому не доверяет ваш компьютер. В этом случае вам необходимо установить сертификат выдающего органа в хранилище доверенных корневых центров сертификации (с этим связаны риски безопасности, поэтому убедитесь, что вы прочитали всплывающее предупреждение, которое появится при попытке сделать это).
Просмотрите сертификат в CertMgr.msc, чтобы узнать, есть ли одна из этих проблем. (Пуск> Выполнить> CertMgr.msc> Личные> Сертификаты).
Странно, потому что, если я устанавливаю сертификат в хранилище сертификатов текущего пользователя, а затем выдаю себя за процесс ASP.NET, чтобы использовать текущую учетную запись, тогда все работает нормально. – Sazug
Похоже, что процесс ASP.NET не имеет доступа для чтения к корневому хранилищу cert, и поэтому он не может получить закрытый ключ. См. Ответ на этот вопрос о предоставлении доступа ASP.NET к сертификату: http://stackoverflow.com/questions/1271497/asp-net-permissions-to-root-certificate-store – noctonura