Позвольте мне сначала подтвердить, что эта проблема почти такая же, как эта:
Сертификат wcf не существует проблемы с ключом после перезагрузки
Но я прочитал это, и это не применимо.
У меня есть клиент и служба WCF, использующие wsHttpBinding, использующие сертификаты и PeerTrust для аутентификации. Служба размещена на отдельном сервере IIS. Клиент на моей машине. У меня установлены правильные сертификаты. Я устанавливаю и запускаю все под своей учетной записью (я в группе администраторов). Все работает.
Однако, когда я выхожу из машины на ночь, а утром снова захожу и пытаюсь запустить свое клиентское приложение под себя, я получаю эту ошибку:
{"Вероятно, что сертификат '[сертификат клиента]' может не иметь закрытого ключа, который способен к обмену ключами, или процесс может не иметь прав доступа к закрытому ключу. Подробности см. Во внутреннем исключении."} >
Внутреннее исключение говорит: {"Набор ключей не существует"}
Я могу запустить приложение от имени администратора, и оно работает.
Однако, если я использую оснастку MMC для удаления, а затем снова импортирую сертификаты, я могу нормально запускать клиент без ошибок.
Я могу выйти и снова, и происходит то же самое. Это не работает, пока я не удалю, а затем снова импортирую сертификаты.
Единственное, что я делаю в своем клиентском приложении, которое не является "стандартным", - это то, что я не использую файл конфигурации для WCF. Я настраиваю все в коде. Но на самом деле это только «чтение» сертификатов, поэтому это не должно иметь значения.
Итак, мой вопрос: почему выход из системы делает меня недействительным пользователем сертификата? Это, очевидно, создаст проблему, когда я распространю клиент, и никто не сможет использовать приложение после одного выхода из системы.