wcf сертификат Keyset не существует проблема после перезагрузки - PullRequest
2 голосов
/ 15 апреля 2009


В одном решении VS есть два проекта: клиент (приложение wpf) и библиотека wcf-службы.
Я использую безопасность сообщений и пользовательский AspNetMembershipPrivider на стороне сервера для проверки имени пользователя и передачи.
Поскольку я не использую безопасность Windows, мне пришлось использовать сертификат на сервере, чтобы установить безопасный канал, и что я сделал:
- открыл мой локальный менеджер IIS и добавил самозаверяющий сертификат с именем likemy dev machine.
- проверил, появился ли этот сертификат в оснастке «Сертификаты» в разделе «Персональные сертификаты»
- настроил wcf .config для указания на этот сертификат.
- запустил мое клиентское приложение в VS (и VS также запустило приложение wcfhost для моей wcf lib)
Все было хорошо, wcfhost работал нормально, и мои службы работали нормально, пока я не перезагрузился. После перезагрузки wcfhost заявил жалобу:

The certificate 'CN=xxx' must have a private key that is capable 
of key exchange. The process must have access rights for the private 
key. ---> 
System.Security.Cryptography.CryptographicException: Keyset does not exist

Единственное, что помогает, - это воссоздание моего сертификата и снова до перезагрузки. Как я уже говорил выше, моя служба работает под моей учетной записью (локальным администратором), поэтому я не думаю, что проблема с разрешениями для моих файлов c: \ Users \ xxx \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ files. < бр />
Причина, по которой я использую iis manager для создания сертифицированных, а не makesert и т. Д., Заключается в том, что я хочу быть уверенным, что все будет работать на моей общей учетной записи osting (у меня есть возможность на панели хостинга создавать самозаверяющие сертификаты). бр />
Кто-нибудь может помочь с этим? Спасибо

Ответы [ 3 ]

2 голосов
/ 16 апреля 2009

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

  • Использовать SelfSSL.exe - доступно как часть набора ресурсов IIS6.0 со следующей командой: SelfSSL.exe / T / N: CN = localhost / V: 999 / Q (вы можете заменить localhost на имя сервера). Это создаст сертификат и установит его в IIS, действительный в течение 999 дней.
  • Использовать winHttpCertCfg - доступно из Microsoft со следующей командой: winHTTPCertCfg.exe -g -c local_machine \ my -s localhost -a SERVICEACCOUNT (замена localhost и SERVICEACCOUNT соответственно), чтобы предоставить служебной учетной записи, в которой вы работаете, доступ к секретному ключу сертификатов.

Дайте мне знать, если вам повезет!

1 голос
/ 21 ноября 2015

Запуск от имени администратора нарушит защиту сертификата, который работает. Но решение заключается в предоставлении имени пользователя, под которым работает ваш сервер, сертификату. В оснастке щелкните правой кнопкой мыши сертификат и выполните все задачи -> управлять личными ключами -> добавить группу или имя пользователя. Для IIS измените местоположение на свой локальный компьютер, и имя пользователя будет «IIS AppPool / xxxxx», где xxxxx - это имя пула приложений IIS, в котором запущено приложение, которое хочет использовать сертификат. Если вы все сделаете правильно, кнопка «проверить» скажет вам об этом. Я также проверил это в IIS Express, но не помню точно, что я сделал! Мне пришлось запустить IIS Express, найти его в диспетчере задач и использовать столбец сведений, чтобы увидеть, под каким именем пользователя он был. Надеюсь это поможет. Работал на меня.

1 голос
/ 17 апреля 2009

Я решил проблему.
Я использую Vista на своем компьютере с включенным UAC. Примерно неделю назад я изменил способ запуска Visual Studio и, видимо, не заметил, что я работал в VS, запущенном без опции «Запуск от имени администратора». Вот почему WcfHost, основанный VS, также имел ограниченные права. Мой плохой, я редко перезагружаю VS, это обычная практика, когда VS работает неделю или две, например, с нереальным обедом simultaniosly.

Кстати, кто-нибудь может сказать, будут ли у меня проблемы с правами доступа к сертификатам на общем хостинге (IIS7) с безопасностью сообщений? или я должен нацелить транспортную безопасность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...