Фон:
Я обновляю внутреннее приложение для двухэтапного процесса аутентификации. Я хочу добавить процесс проверки сертификата клиента (через смарт-карту) поверх традиционной формы имени пользователя/пароля. Приложение написано на С#, размещенном на IIS7, и нацелено на Chrome и IE8.
Проблема:
У меня возникают проблемы с тем, чтобы приложение запрашивало у пользователя сертификат клиента. Я отлаживал приложение с помощью Fiddler. Когда у меня есть сертификат тестового клиента, сохраненный в пользовательском каталоге Fiddler (C:\Documents and Settings\USER\My Documents\Fiddler2), приложение работает как ожидалось. Мне предлагается номер PIN-кода, защищающий смарт-карту, и, когда он правильно введен, возвращает меня в форму для входа. Когда я закрываю Fiddler, приложение вместо этого выдает ошибку 403 Forbidden (поскольку Fiddler больше не работает и указывает на его сертификат). То, что я не смог понять, - это то, почему приложение не запрашивает сертификат обычно.
Текущая настройка сервера:
- Создан самоподписанный сертификат
- 443 Связывание указывает на самоподписанный сертификат
- Анонимная аутентификация включена
- Сертификат с самостоятельной подпиской был добавлен как к доверенному корневому ЦС, так и к промежуточному ЦС (я прочитал, что другой человек имел это как в доверенном корневом ЦС, так и в том, что решил их проблему, хотя ни одна из них не работала для нас).
- Я очистил остальные сертификаты в доверенном корневом ЦС, которые мне не нужны (я читал в другом месте, что наличие слишком большого количества сертификатов может привести к блокировке SSL).
У меня нет идей, чтобы попробовать, кроме как начать с нуля на другом сервере. Кто-нибудь знает, в чем проблема? Кажется, это должно быть довольно прямолинейно, и я пропускаю что-то незначительное. Любые идеи приветствуются.
Update:
Проведя больше времени с этой проблемой сегодня, я твердо верю, что это связано с неправильной настройкой IIS7 (я не настроил ее изначально). Я думаю, это потому, что я включил Failed Request Tracing, посмотрел на последующие .xml файлы, которые были сгенерированы, и увидел, что была выбрана ошибка 500.
Chrome бросает сообщение "Доступ к веб-странице отклонен", а не "403 - Запрещено: доступ запрещен". Я не знаю, поможет ли это. Я знаю, что, когда я не сделаю необходимые сертификаты, сайт будет работать по назначению. Требование сертификата - это то, где он терпит неудачу.
Пул приложений установлен в .Net 4.0 | Классический | Сетевая служба.