Я пытаюсь включить взаимную аутентификацию для своего WebService, размещенного в IIS7. У меня есть настроенный и работающий сертификат на стороне сервера, но я не могу понять, как создать и настроить список доверия сертификатов в IIS7, чтобы я мог запрашивать и проверять сертификаты на стороне клиента.
Все сертификаты на стороне клиента подписаны моим собственным корневым сертификатом, поэтому мне нужно создать CTL, содержащий только мой корневой сертификат, а затем IIS проверить предоставленные клиентом сертификаты на соответствие CTL.
Может ли кто-нибудь пролить свет на то, как это сделать? В IIS6 был пользовательский интерфейс для назначения CTL, но я не могу найти ничего похожего в IIS7.
Обновить: Теперь я успешно использовал MakeCTL в режиме мастера для создания CTL с понятным именем. Однако у меня нет поддержки adsutil в моем ящике IIS7, поэтому в других сообщениях в другом месте я пытаюсь использовать команду netsh http add sslcert для назначения CTL моему сайту.
Прежде чем я смог использовать эту команду, мне пришлось удалить существующий сертификат SSL, который был назначен моему сайту для аутентификации сервера. Затем в моей команде netsh я указываю отпечаток того самого сертификата SSL, который я удалил, плюс выдуманный appid, плюс sslctlidentifier = MyCTL sslctlstorename = CA. Итоговая команда:
netsh http add sslcert ipport = 10.10.10.10: 443 certhash = adfdffa988bb50736b8e58a54c1eac26ed005050 appid = {ffc3e181-e14b-4a21-b022-59fc669b09ff} sslCTLidentifier = CA
(IP-адрес изменен), но я получаю эту ошибку:
Ошибка добавления сертификата SSL: 1312 Указанный сеанс входа в систему не существует. Возможно, он уже был прекращен.
Я уверен, что ошибка связана с параметрами CTL, потому что, если я их удалю, он работает (хотя, конечно, CTL не назначается).
Может ли кто-нибудь помочь мне сделать этот последний шаг и заставить эту работу работать?
ОБНОВЛЕНИЕ 01-07-2010: Я так и не решил эту проблему с помощью IIS 7.0 и с тех пор перенес наше приложение на IIS 7.5 и делаю еще одну попытку. Согласно ответу Тараса Чухая, я установил совместимость с IIS6 на свой тестовый сервер и попробовал шаги, которые он задокументировал, используя adsutil.vbs (который также можно найти Вот). Я сразу столкнулся с этой ошибкой:
ErrNumber: -2147023584 Ошибка при попытке установить свойство: SslCtlIdentifier
при запуске этой команды:
adsutil.vbs установить w3svc / 1 / SslCtlIdentifier MyFriendlyName
Затем я попробовал следующую задокументированную команду adsutil.vbs, и она не удалась с той же ошибкой.
Я подтвердил, что созданный мной CTL имеет понятное имя MyFriendlyName и что он существует в хранилище «Промежуточные центры сертификации \ Список доверия сертификатов» на LocalComputer.
Итак, я снова зашел в тупик. Не знаю, что еще попробовать. Кто-нибудь когда-нибудь получал CTL для работы с IIS7 или 7.5? Когда-либо? Я бью МЕРТВУЮ лошадь. Google не обнаруживает ничего, кроме моих собственных сообщений и других подобных историй.
Обновление 23.02.10 - Я подтвердил в Microsoft, что это ошибка IIS 7.5, но она работает с IIS 7. Подробнее см. По этой ссылке: http://rethinker.net/Geek/Configuration/IIS7-CTLs.htm
Обновление 6/08/10 - Теперь я могу подтвердить, что KB981506 решает эту проблему. С этим KB связан патч, который необходимо применить к компьютерам Server 2008 R2, чтобы включить эту функцию. Как только он установлен, все работает у меня безупречно.
Вам необходимо установить это исправление от Microsoft.
KB981506 - решает эту проблему.
Извините, я не видел ссылки на КБ в ответах, пока не опубликовал это
Это звучит странно, но вы не можете использовать пользовательский интерфейс IIS 7.0 для создания списка доверенных сертификатов (CTL). Выполните следующие действия, чтобы создать CTL с IIS 7.0.
Используйте MakeCTL.exe для создания CTL. Дополнительные сведения о MakeCTL.exe см. В MakeCTL на сайте MSDN.
Инструмент MakeCTL.exe является частью .NET Framework SDK версии 1.1. После установки SDK MakeCTL.exe появится в следующем месте:
\ Program Files \ Microsoft.NET \ SDK \ v1.1 \ Bin
После создания CTL необходимо запустить AdsUtil.vbs, чтобы присвоить идентификатор CTL имени, используемому в MakeCTL.exe.
adsutil.vbs установить w3svc / 1 / SslCtlIdentifier
где - понятное имя CTL, используемого в MakeCTL.exe.
adsutil.vbs установить w3svc / 1 / SslCtlStoreName CA
чистая остановка HTTP / y
чистый старт W3SVC
Вы позаботились о том, чтобы CTL создавался в контексте машины? По умолчанию SSL будет искать в контексте компьютера, и если он не может найти его там, он выдаст вам ошибку (хотя не уверен, что это именно та).