Сбой согласования безопасности клиента WCF после выхода из системы - PullRequest
1 голос
/ 24 ноября 2010

Позвольте мне сначала подтвердить, что эта проблема почти такая же, как эта: Сертификат wcf не существует проблемы с ключом после перезагрузки
Но я прочитал это, и это не применимо.

У меня есть клиент и служба WCF, использующие wsHttpBinding, использующие сертификаты и PeerTrust для аутентификации. Служба размещена на отдельном сервере IIS. Клиент на моей машине. У меня установлены правильные сертификаты. Я устанавливаю и запускаю все под своей учетной записью (я в группе администраторов). Все работает.

Однако, когда я выхожу из машины на ночь, а утром снова захожу и пытаюсь запустить свое клиентское приложение под себя, я получаю эту ошибку: {"Вероятно, что сертификат '[сертификат клиента]' может не иметь закрытого ключа, который способен к обмену ключами, или процесс может не иметь прав доступа к закрытому ключу. Подробности см. Во внутреннем исключении."} > Внутреннее исключение говорит: {"Набор ключей не существует"}

Я могу запустить приложение от имени администратора, и оно работает.
Однако, если я использую оснастку MMC для удаления, а затем снова импортирую сертификаты, я могу нормально запускать клиент без ошибок.
Я могу выйти и снова, и происходит то же самое. Это не работает, пока я не удалю, а затем снова импортирую сертификаты.

Единственное, что я делаю в своем клиентском приложении, которое не является "стандартным", - это то, что я не использую файл конфигурации для WCF. Я настраиваю все в коде. Но на самом деле это только «чтение» сертификатов, поэтому это не должно иметь значения.

Итак, мой вопрос: почему выход из системы делает меня недействительным пользователем сертификата? Это, очевидно, создаст проблему, когда я распространю клиент, и никто не сможет использовать приложение после одного выхода из системы.

1 Ответ

0 голосов
/ 24 ноября 2010

Можно установить сертификат для локального компьютера? Это предотвратит такое поведение.

...