Служба WCIS, размещенная в IIS SSL - проблема с сертификатами или разрешениями - PullRequest
1 голос
/ 19 февраля 2010

Прежде чем кто-либо пометит это как дубликат из другой бочки, полной вопросов о WCF, я не хочу ссылки на MSDN и ссылки на статьи в блогах.Я могу Google для себя, и был в этом в течение 3 дней, поэтому, если у вас есть только ссылки Google, пожалуйста, воздержитесь.и пользовательский аутентификатор пароля.IIS работает нормально для моих стандартных незащищенных служб ASPX и WCF (при использовании wsHttpBinding с режимом безопасности = «Нет», но при попытке режима безопасности = «Сообщение» или «Транспорт» требуется сертификат SSL в соединении.что я получаю эту ошибку: «Сертификат« CN = SignedByCA »должен иметь закрытый ключ, способный к обмену ключами. У процесса должны быть права доступа к закрытому ключу».

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

Я сгенерировал ключи, используя:

  makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer
  makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My

I тогдаимпортировал сертификат TempCA в мое хранилище Trusted Root Certification Authority, и я импортировал SignedByCA.cer в мое «Личное» хранилище локального компьютера. WCF теперь может видеть сертификат, но указанная выше ошибка указывает либо на проблему с разрешениями, либо на проблему с ключомЯ попытался импортировать сертификат в личный магазин IIS Admin Service, но не повезло.

Кстати, я добавил это в свой web.config для службы:

       <serviceCertificate
          findValue="...."
          x509FindType="FindByThumbprint"
          storeLocation="LocalMachine"
          storeName="My"
          />

Я получаю сообщение об ошибке из своего клиентского проекта при добавлении / обновлении ссылки на службу.

Из моего исследования в Windows 7 я должен иметь возможность использовать диспетчер сертификатов, щелкнуть правой кнопкой мыши сертификат в оснастке MMC и выбрать «Все задачи» -> «Управление закрытым ключом» или что-то подобное.Когда я щелкаю правой кнопкой мыши по сертификату, я не вижу этой опции, у меня есть только эти опции в разделе Все задачи: [Открыть, Запросить сертификат с новым ключом, Обновить сертификат с новым ключом, Экспорт ...] Это заставляет меня поверить, что этопроблема с сертификатом, а не конфиденциальная.

Заранее спасибо.

1 Ответ

1 голос
/ 19 февраля 2010

После регенерации файла .PFX (сертификат PKCS # 12) http://msdn.microsoft.com/en-us/library/ms867088.aspx (создайте файл .spc с помощью cert2spc.exe и файл .pfx с помощью pvk2pfx.exe) и загрузите файл .pfx в сертификат магазин, это выставляет опцию «Управление закрытым ключом». Первоначальной проблемой было слепое следование инструкциям MSDN и использование файла открытого сертификата .CER, что было недостаточно для обмена ключами. Файл .PFX делает свое дело. Теперь я могу добавить разрешения для пользователей / служб для чтения ключа.

Я также обнаружил, что IIS7 в Windows7 не работал под обычным задокументированным идентификатором «СЕТЬ СЕТИ» или «ЛОКАЛЬНАЯ СЛУЖБА», но работал под «ApplicationPoolIdentity». Так что после того, как я сменил личность, эта проблема разрешилась (просто еще одно раздражение, вызвав WCF с земли).

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