Я пытаюсь настроить службу WCF для использования сертификата для аутентификации клиента.Я прочитал тонны сообщений о том, как создать сертификат, и я смог это сделать (наконец-то).
Я устанавливаю Cert Authority и Cert на сервер под управлением Windows 2008 R2.Открывая оснастку «Сертификаты MMC», я выбираю Учетная запись компьютера .Это правильно?Я делаю это, потому что моя служба WCF будет работать в службе Windows и будет работать, даже если ни один пользователь не вошел в систему. Но, разумеется, я не знаю, в чем разница между тремя вариантами:
- Моя учетная запись пользователя
- Сервисная учетная запись
- Учетная запись компьютера
После загрузки оснастки я импортирую сертификат авторизации в Сертификат доверенного корняВласти .Затем я импортирую сертификат в Trusted Publishers .Я не сталкиваюсь с ошибками при этом.Когда я выполняю импорт сертификата авторизации и сертификата, подписанного этим полномочным органом, я не делаю никаких ссылок на файл .pvk.Насколько я понимаю, закрытый ключ встроен либо в сертификат, либо в сертификат органа.Вот команды, которые я использую для создания каждого сертификата:
MakeCert.exe
-n “CN=InternalCA”
-r
-sv InternalCA.pvk InternalCA.cer
-cy authority
MakeCert.exe
-sk InternalWebService
-iv InternalCA.pvk
-n “CN=InternalWebService”
-ic InternalCA.cer InternalWebService.cer
-sr localmachine
-ss root
-sky exchange
-pe
Обратите внимание, что я использовал -ss root.Я видел много сообщений, использующих -ss My.Я не очень понимаю, в чем разница или когда уместно использовать каждое значение.
Моя служба WCF работает на этом компьютере в управляемой службе (служба Windows).Когда я запускаю свою службу Windows, на которой размещается служба WCF, она сразу же падает, и в средстве просмотра событий появляется обычная ошибка:
System.ArgumentException: вполне вероятно, что сертификат 'CN = TempCertName'может не иметь закрытого ключа, который способен к обмену ключами, или процесс может не иметь прав доступа к закрытому ключу
Я нашел сообщения, в которых говорится, что мне нужно предоставить разрешения пользователю, выполняющемуСлужба на ключ.
Этот ответ, похоже, является популярным здесь для stackoverflow: Предоставить доступ со всеми задачами / Управление личными ключами
Но у меня нет опции Все задачи / Управление личными ключами
Но я не совсем понимаю, как это сделать.Кроме того, служба работает под моей учетной записью домена, которая является администратором и является тем же пользователем, который установил сертификат.
Пожалуйста, помогите:)