воскресенье, 12 мая 2013 г.

Использование SSL в pfSense

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

Итак, приступаем. Для начала заходим в webConfigurator под администратором и находим менеджер сертификатов (System/Cert Manager). В менеджере видим три вкладки:
1. CAs - доверенные центры сертификации
2. Certificates - сертификаты
3. Certificate Revocation - аннулированные сертификаты

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

На первой вкладке (CAs) нажимаем на "+" и в появившейся форме указываем:
Descriptive name - Описание, например "Internal CA"
Method - "Create Internal Certificate Authority"
Key length - Длина ключа, я оставил значение "2048"
Lifetime - Время действия в днях, "3650" вполне достаточно

Раздел "Distinguished name" заполняется произвольно, например так :
Country Code : "RU"
State or Province : "Krasnoyarsky Kray"
City : "Krasnoyarsk"
Organization : "My Company"
Email Address : "admin@mycompany.ru"
Common Name : "internal-ca"

Рисунок 1 - Добавление Internal Certificate Authority
После создания сертификата центра сертификации нужно сгенерировать сертификат, который будет использоваться для доступа к веб интерфейсу pfSense. Переходим на вкладку "Certificates" и нажатием на "+" добавляем наш сертификат. Все поля заполняются аналогично предыдущему шагу. В поле "Certificate Type" указываем тип генерируемого сертификата, я указал "Server Certificate". В поле "Common Name" нужно указать IP адрес или DNS-имя pfSense, в моем случае указан IP "192.168.0.1".
Рисунок 2 - Добавление сертификата
Следующим шагом нужно настроить доступ к web-интерфейсу по протоколу https. Для этого идем в System/Advanced/Admin Access/webConfigurator и в поле "Protocol" указываем "HTTPS". А в поле "SSL Certificate" указываем сертификат, созданный на предыдущем шаге.

Рисунок 3 - Настройка HTTPS
На этом настройка pfSense закончена, при следующем входе в webConfigurator мы увидим предупреждение, о том, что подлинность сертификата, используемого на данном хосте не может быть проверена, а в адресной строке увидим предупреждение об ошибке SSL. Для решения данной проблемы нужно добавить корневой сертификат нашего центра сертификации в "доверенные корневые центры сертификации". Переходим в System/Cert Manager/CAs и справа от сертификата центра сертификации (не путать с сертификатом, используемым для SSL, на вкладке "Certificates"), нажимаем на кнопку "export CA cert". Сохраняем сертификат в любую удобную папку на жестком диске и запускаем двойным щелчком мыши. Запустится мастер импорта сертификатов.

Рассмотрим импорт на примере Windows 7. После запуска мастера читаем пояснения и нажимаем "Далее". На втором шаге нужно указать хранилище сертификатов,  выбираем пункт "Поместить все сертификаты в следующее хранилище" нажимаем "Обзор..." и останавливаем свой выбор на "Доверенные корневые центры сертификации". Нажимаем "Далее", а затем "Готово", на предупреждение безопасности отвечаем положительно. Мастер завершит свою работу.

Рисунок 4 - Выбор хранилища сертификатов
Для проверки из меню "Выполнить" (WIN+R) запускаем mmc. В окне консоли выбираем "Файл/Добавить или удалить оснастку...". В окне добавления оснастки выбираем "Сертификаты" и нажимаем "Добавить". На вопрос, какими сертификатами управлять отвечаем: "моей учетной записи пользователя" и конечно же нажимаем "OK".

Рисунок 5 - Добавляем оснастку в консоль
Если все сделано правильно, то в папке "Доверенные центры сертификации/Сертификаты" появится сертификат нашего центра. В моем случае он называется "internal-ca". Ну и конечно же заходим в web-интерфейс. У меня в адресной строке появилось уведомление о работе по протоколу HTTPS:
Рисунок 6 - Результат
Если возникают ошибки, связанные с сертификатами, внимательно читаем описание, зачастую сразу становится понятно, где закралась ошибка. Возможно, не совпадает адрес сервера и адрес указанный в сертификате. Либо некорректно выполнен импорт сертификата корневого центра.

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

  1. Привет. Есть такая проблема. При удаленном подключении к шлюзу через pptp не могу зайти на web интерфейс pfsense. Ругается на сертификат. Куда смотреть ? FireFox пишет что сертификат слишком длинный ssl_error_rx_record_too_long

    ОтветитьУдалить
  2. А как теперь вернуть как было? Как отключить эту штуку?

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