Ошибка подключения протокола SSL. Ошибка SSL-подключения: устраняем проблему. Общая схема аутентификации по сертификатам

Остальные материалы цикла:

  • Аутентификация клиентов в сетевых службах при помощи цифровых сертификатов — подведение итогов

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

Общая схема аутентификации по сертификатам

Когда пользователь аутентифицируется при помощи сертификата на веб-сайте, происходит примерно следующий процесс:

  1. Пользователь запрашивает доступ к некоторой сетевой службе;
  2. По запросу сервер посылает клиенту свой серверный сертификат (сертификат SSL). Клиент проверяет его на валидность. Если проверка провалилась, на этом всё заканчивается;
  3. Если проверка прошла успешно, клиент запрашивает доступ к ресурсам службы;
  4. Служба сконфигурирована на обязательную аутентификацию пользователя и отправляет клиенту доступные (на сервере) методы аутентификации. В нашем случае это требование клиентского сертификата;
  5. Клиент посылает на сервер публичную часть своего сертификата и некоторый объём подписанных клиентским сертификатом данных. Сервер проверяет клиентский сертификат на валидность. Если сертификат не прошёл проверку — разговор клиента и сервера на этом завершается. Если сертификат прошёл проверку, сервер пытается сопоставить (или ассоциировать) сертификат с учётной записью пользователя. Если сопоставление не удалось — разговор завершается.
  6. Если учётная запись найдена и сертификат удалось сопоставить с ней, сервер начинает установку защищённого канала. После установки этого канала, сервер предоставляет пользователю ресурсы в том объёме, в котором это позволяют списки доступа (ACL, например).

Я посчитал нужным немного развернуть последний пункт, чтобы вы понимали общее устройство этого канала (поскольку, у людей есть некоторые заблуждения на этот счёт):

  1. Клиент запрашивает установку безопасного канала;
  2. Сервер отвечает согласием и пересылает клиенту список поддерживаемых симметричных протоколов шифрования;
  3. Клиент посылает на сервер свой список протоколов симметричного шифрования;
  4. Клиент и сервер договариваются и выбирают наиболее подходящий протокол. Например, — Я умею DES и 3DES, а что умеешь ты? — А я умею только 3DES и AES. — Отлично, давай тогда использовать 3DES;
  5. Клиент на своей стороне генерирует сессионный симметричный ключ шифрования и шифрует его открытым ключом сертификата сервера. Этот процесс называется Key exchange. Как мы знаем, прочитать этот ключ сможет только веб сервер, т.к. только он владеет закрытым ключом, который ассоциирован с конкретным сертификатом SSL;
  6. После этого, все передаваемые данные шифруются именно этим сессионным ключом. Помните, что при передаче данных сертификаты уже не используются (а многие считают, что все данные шифруются открытыми ключами сертификатов). Сертификаты используются только при обновлении сессионного ключа (который периодически меняется).

Немного другой процесс происходит при интерактивном логоне или логоне на сервер терминалов посредством Remote Desktop при помощи смарт-карты.

Логон смарт-картой или PKINIT

Интерактивная аутентификация в Active Directory по сертификату не является самостоятельным механизмом. Как и всегда, основной протокол аутентификации в домене — Kerberos. Чтобы обеспечить взаимодействие между аутентификацией по смарт-карте и Керберосом, применяется нехитрый протокол PKINIT. PKINIT, в свою очередь, является лишь надстройкой над керберосом (или расширением протокола). Вот как он примерно работает:

Примечание: если у пользователя уже есть соответствующий сервисный тикет (TGS), выполняются только шаги 5 и 6.

  1. Пользователь вводит PIN от смарт-карты и посылает запрос AS-REQ на контроллер домена (он же Key Distribution Center — KDC). Этот запрос содержит преаутентификационные данные PA_PK_AS_REQ, которые, в свою очередь, содержат логонный сертификат и подписанная временная метка и опциональные атрибуты. В качестве опциональных атрибутов, клиент посылает список поддерживаемых алгоритмов, корневых CA, параметры Diffie-Hellman и т.д. Более детально структуру запроса (а там есть достаточно занятных вещей) можно найти в RFC 4556 §3.2.1 (пункт 5 на странице 12). В связи с этим (например, передача списка доверенных корневых CA от клиента на сервер) время логона смарт-картой будет значительно медленней, чем при связке логин/пароль. Плюс расходы на криптографические операции.
  2. Сервер KDC проверяет запрос и пробует ассоциировать полученный сертификат с учётной записью пользователя. Если сопоставление сертификата с учётной записью произошло успешно, KDC формирует ответ AS-REP, включая в него Ticket-Granting Ticket (TGT) и прочую необходимую информацию. Ответ подписывается сертификатом самого KDC (именно поэтому, при использовании смарт-карты для логона, сервер KDC должен иметь свой собственный сертификат (о нём мы поговорим в следующих статьях).
  3. Клиент проверяет этот ответ и проверяет подпись (вместе с сертификатом KDC). Если с ответом и сертификатом всё хорошо, клиент, на основе имеющегося TGT, генерирует Ticket Granting Service запрос — TGS-REQ для доступа к конкретной службе и отправляет его на KDC.
  4. KDC проверяет запрос TGS-REQ и в случае положительного вердикта формирует ответ Ticket-Granting Service (TGS-REP), включая в него всю необходимую информацию для интерактивного логона, включая все необходимые SID"ы и учётные данные для аутентификации при помощи NTLM.
  5. Клиент генерирует специальный токен GSS-API (

Для подтверждения подлинности с прочими серверами и приложениями ISA может использовать несколько методов аутентификации. Речь идет только о методах аутентификации. Проблемам настройки будут посвящены отдельные статьи, касающиеся конфигурирования. Тестирование производилось с применением браузера IE версии 5.5, поскольку для ряда прочих браузеров никакие типы аутентификации, кроме основной, недоступны.

ISA сервер способен поддерживать четыре метода аутентификации:

  • Серверные и клиентские сертификаты.
  • Комплексная аутентификация.
  • Аутентификация по дайджесту.
  • Основная аутентификация.

Серверные и клиентские сертификаты

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

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

Клиентский сертификат

Если сервер ISA запрашивает у компьютера клиента клиентский сертификат до того, как разрешит или запретит доступ к запрашиваемым ресурсам, такой метод аутентификации называется клиентский сертификат.

  • Клиент направляет серверу запрос, а сервер ISA направляет в ответ свой сертификат.
  • Потом ISA сервер играет роль SSL веб-сервера.
  • Клиент, получивший сертификат, имеет возможность проверить, является ли предоставленный сертификат
    удостоверением ISA сервера.
  • Теперь клиент запрашивает у ISA сервера те ресурсы, которые ему необходимы.
  • ISA сервер сличает сертификат с тем, который он направлял клиенту в самом начале процедуры.
  • ISA сервер должен убедиться может ли данный клиент получить доступ к той информации, просмотра которой он добивается.

Все клиентские сертификаты должны сохраняться в хранилище сертификатов компьютера ISA сервера. Сюда и поступают запросы клиентов. В зависимости от размеров организации и имеющейся в ней структуры, речь может идти об одном или двух компьютерах. Для того чтобы сертификаты не перепутались, они должны быть учтены под учетными записями пользователей.

Сертификаты серверов

Если клиент у сервера запрашивает SSL объекты, сервер обязательно должен удостоверить свою подлинность. Если в период проведения аутентификации происходит обрыв соединения или аварийная ситуация, после устранения недоразумения весь процесс должен быть произведен снова.

  • Серверные сертификаты обязательно должны присутствовать на ISA сервере в хранилище серверных сертификатов.
  • Обозначение сертификата должно совпадать или соответствовать обозначению ISA сервера.
  • Запрашивая у сервера SSL объекты, клиент тем самым требует подтверждения у сервера подлинности.
  • При обрыве SSL соединения ISA сервер обязан подтвердить собственную достоверность.
    Основная аутентификация

Этот метод аутентификации полностью соответствует процедуре HTTP аутентификации. Закодированными при передаче данных являются только имя и пароль, все прочие сведения сообщаются открытым текстом. Это позволяет уменьшить нагрузку на систему.

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

Аутентификация по дайджесту

Этот метод аутентификации может быть использован лишь для доменов Windows 2000.
Если при основной аутентификации учетные данные пользователя направляются открытым текстом, то при аутентификации по дайджесту они хэшируются (кодируются.). Поэтому этот метод для пользователя считается более безопасным.

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

Комплексная аутентификация

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

При этом методе аутентификации применяется встроенный протокол (NTLM) или Kerbros, с помощью которых производится запрос и отзыв .

Сквозная аутентификация

При этом методе аутентификации не поддерживается Kerbros. При этом процессе ISA сервер сообщает информацию, подтверждающую достоверность клиента, серверу. Сервер ISA способен обеспечить указанный метод аутентификации для входящих и исходящих запросов.

  • Клиент направляет веб-серверу GET запрос.
  • Веб-сервер выдаёт ошибку 401. Он требует аутентификацию и сведения о том, какой метод аутентификации может быть поддержан.
  • ISA сервер сообщает клиенту о том, что следует произвести аутентификацию. Клиент направляет ISA серверу ту информацию, которую он затребовал, а ISA сервер отправляет эти сведения веб-серверу.
  • Далее общение клиента осуществляется с веб-сервером.

Используемый метод аутентификации иногда очень важен, если причина неполадок не лежит на поверхности. Надеемся,что эта статья поможет в работе.

Протоколы открытых ключей позволяют устанавливать авторизованные шифруемые связи между узлами внутренних сетей и в интернете. Существуют три модели аутентификации, проводимой в этих протоколах; они используются как по отдельности, так и в комбинации.

  • Аутентификация клиента . Позволяет серверу Windows 2000 VPN или веб-серверу IIS идентифицировать пользователя с использованием стандартных методов шифрования на открытом ключе. Осуществляет проверку подлинности сертификата клиента и общего ID, а также проверку того, что эти данные сгенерированы бюро сертификатов, корневой сертификат которого установлен в перечне доверенных CA. Эта проверка очень важна, если сервером является банк, который передает конфиденциальную финансовую информацию клиенту и должен подтвердить личность получателя. На рисунке 8.1 отображен процесс аутентификации.
  • Аутентификация сервера . Позволяет клиенту VPN или браузеру клиента SSL/TLS подтверждать идентичность сервера, проверяя правильность сертификата сервера и идентификатора ID, а также то, что сертификаты выпущены бюро сертификатов (CA), корневой сертификат которого присутствует в перечне доверенных CA клиента. Это подтверждение имеет важное значение для пользователя веб-сайта, который отправляет номер кредитной карты через сеть и хочет удостовериться в том, что это именно тот сервер, который ему нужен.
  • Взаимная аутентификация . Позволяет клиенту и серверу авторизовать друг друга единовременно. Взаимная аутентификация требует, чтобы клиент и сервер имели цифровые сертификаты и соответствующие корневые сертификаты CA в перечнях доверенных CA.

Большая часть коммерческих CA, таких как Verisign, встроены в браузеры Netscape и Microsoft как корневые сертификаты по умолчанию. Пользователям и менеджерам сети не нужно устанавливать сертификаты, аутентификация сервера работает автоматически. Если организация выступает в роли своего собственного бюро сертификатов, то необходимо дополнительно установить корневой сертификат во всех браузерах компьютеров-клиентов интранет-сети и предоставить соответствующие инструкции.

На рисунке 8.1 показано, как работает аутентификация SSL/TLS. На практике в большей части веб-сайтов используется только серверная аутентификация с помощью цифрового сертификата, так как распространение клиентских сертификатов среди всех посетителей сайта представляет собой огромную работу (это сделать несколько легче, если клиенты объединены в сеть интранет).

Аргументом против использования сертификатов на компьютерах-клиентах является то, что при этом система открывается для потенциальных словарных атак. Клиент с браузером аутентифицирует сервер методами открытого ключа, но сервер просто использует пароли для аутентификации своих клиентов, поэтому хакер может выполнить атаку посредством угадывания пароля. Руководство компаний, не использующих сертификаты, считает, что цена разработки выше, чем реальная угроза; как и большая часть бизнес-решений, данное утверждение основывается на экономическом факторе.



Просмотров