среда, 1 июля 2015 г.

MikroTik SSTP VPN, ошибка сертификата 0x800B010F

Недавно появилась задача настроить SSTP VPN на базе роутера MikroTik 951Ui 2HnD таким образом, чтобы к нему мог подключаться другой роутер MicroTik2 750 GL, а так же чтобы могли подключаться "одиночные" клиенты с рабочих станций.
Туннель между двумя роутерами был мной настроен ранее, в этом ни чего сложного нет, все подробно описано в базе знаний Mikrotik(на этой же странице описан процесс настройки сервера с возможностью подключения "одиночных" пользователей). По скольку на тот момент не стоял вопрос о подключении "одиночных" пользователей, то сертификаты я не создавал и подключение было настроено без них. Когда же появилась необходимость подключения таких пользователей, стало очевидно, что нужно генерировать и устанавливать сертификаты. Этот процесс так же подробно описан в базе знаний.
Для большей наглядности я нашел в Интернете видео , где настраивается соединение между двумя роутерами с использованием сертификатов. Подобным образом я сгенерировал сертификаты у себя, экспортировал их и установил на "клиентский" роутер. Туннель между роутерами после этого поднялся без проблем.
Сложности начались при настройки клиентского подключения в Windows. Может быть я плохо искал, но в Интернете не очень много описаний того, как настраивать клиентское SSTP подключение на Windows. Первым делом учетной записи компьютера нужно установить корневой и клиентский сертификаты. Затем создать новое клиентское подключение, в настройках задать его тип(SSTP), протокол шифрования(я оставил только mschap2), адрес сервера, куда будет подключаться клиент(внешний IP-адрес роутера, где настроен SSTP-сервер), ввести логин и пароль пользователя. После всего этого я попробовал подключиться, но получил ошибку 0x80070320. В базе знаний MikroTik на странице, где описан процесс настройки SSTP-сервера, сказано, что чтобы этой ошибки не появлялось, нужно на сервере отключить пункт verify-client-certificate. После этого при подключении стала появляться ошибка 0x800B010F "CN имя сертификата не совпадает с полученным значением". В процессе поиска примеров настройки в Windows удачного клиентского подключения я нашел вот это видео . На нем при создании сертификата в поле CN прописывается внешний IP-адрес роутера, к которому подключаются(в первом видео туда прописывается название сертификата, аналогично полю Name и я у себя сделал так же). Пришлось по новой перегенерировать и переустанавливать сертификаты. У корневого и серверного сертификата в поле CN я поставил внешний IP адрес роутера, у клиентского сертификата оставил его как раньше. Далее установил эти сертификаты на клиентский роутер и компьютер. Туннель на роутере, как и ранее, поднялся без проблем, подключение с компьютера тоже установилось без проблем.

P.S.:
Позже выяснилось, что для подключения клиента Windows достаточно лишь установки корневого сертификата. Наличие или отсутствие в системе клиентского сертификата на успешность подключения никак не влияет(очевидно в силу того, что в настройках сервера снята галочка в verify-client-certificate).

3 комментария:

  1. спасибо очень помогло проблема решилась на половину в 10 ке все подключается в семерке ругается на цепочку сертификатов и какие то довереные отношения.

    ОтветитьУдалить
    Ответы
    1. Надо сертификат CA устанавливать в хранилище доверенныйх центров сертификации ЛОКАЛЬНОГО КОМПЬЮТЕРА а не пользователя.

      Удалить
  2. Тоже столкнулся с такой проблемой, как вариант решения
    - при создании сертификата сервера
    - в параметре Common Name, а точнее его подпункте Subject Alt Name
    - надо указать все возможные имена и ЙП адреса сервера, начиная от локального ЙП и заканчивая параметром Identity
    Тогда Виндовый клиент при подключении к сервиру - верифицирует что ЙП адрес к которому подключается совпадает с тем ЙП \ Именем что есть в сертификате - и пропускает.

    ОтветитьУдалить