Работаем с сертификатами Let's Encrypt на роутерах Mikrotik (RouterOS 7)

Рассказывать о том, что такое Let's Encrypt сегодня не нужно, этот центр сертификации стал фактически стандартом де-факто для быстрого и автоматического получения бесплатных сертификатов. Это позволяет без лишних затрат надежно защитить сетевые службы и больше не возвращаться к этому вопросу. В новой версии RouterOS 7 также появилась возможность работать с этим центром сертификации, что сделало возможным отказаться от выпуска собственных сертификатов и избежать необходимости их ручной установки на клиенте. Но не все так просто и радужно и в данной статье мы эти вопросы разберем.

Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Подготовка к получению сертификата

Для получения сертификата Let's Encrypt вам понадобится доменное имя и выделенный IP-адрес, если у вас уже есть собственный домен, то можете создать нужный поддомен и в A-записи для него указать выделенный адрес роутера. Эти изменения вносятся на DNS-сервере, обслуживающем ваш домен. Например, запись может выглядеть так (формат BIND):

1chr72   IN A 198.51.100.72

При работе через веб-интерфейс смысл остается примерно тем же:

Если собственного доменного имени нет или выделенный адрес является динамическим, то можно использовать встроенную службы DDNS в Mikrotik. Для этого перейдите в IP - Cloud и установите флаг DDNS Enabled, через некоторое время вы получите уникальное доменное имя для роутера.

1/ip cloud
2set ddns-enabled=yes

Для работы с Let's Encrypt нам потребуется веб-сервер и открытый для доступа извне 80 TCP порт. А вот здесь начинаются первые особенности, веб-сервер в RouterOS неразрывно связан с webfig, т.е. веб-интерфейсом для настройки роутера и вам придется его включить в IP - Services:

Поэтому, прежде чем открывать доступ, убедитесь, что все ваши пользователи имеют надежные пароли. Также можно подстраховаться и запретить вход в webfig всем или выбранным категориям пользователей. Для этого перейдите в System - Users и в открывшемся окне, на вкладке Groups для всех или только выбранных групп снимите в разрешениях флаг web.

Теперь при попытке входа, даже с правильными учетными данными, вы получите сообщение что аутентификация не выполнена.

Все, что нам осталось - это создать разрешающее правило для входящего трафика на 80 порт. Переходим в IP - Firewall и создаем правило: Chain - input, Protocol - 6 (tcp), Dst. Port - 80. Так как действие по умолчанию - accept, то никаких дополнительных действий делать не нужно. После создания обязательно добавьте ему комментарий, например, HTTP.

Либо в терминале:

1/ip firewall filter
2add action=accept chain=input comment=HTTP dst-port=80 protocol=tcp

Данное правило должно располагаться ниже правила разрешающего уже установленные и связанные соединения и выше запрещающего правила в цепочке INPUT.

Получаем сертификаты штатными инструментами RouterOS 7

Графического инструмента для работы с Let's Encrypt нет, поэтому перейдем в терминал и отдадим команду:

1/certificate enable-ssl-certificate dns-name=chr72.example.com

Если вы используете встроенную службу DDNS, то можно ограничиться командой:

1/certificate enable-ssl-certificate

Полученный сертификат можно увидеть в System - Certificates, он будет иметь имя вроде letsencrypt-autogen_2023-07-31T17:09:41Z и флаги KT.

Он автоматически привязывается к службе www-ssl и также будет автоматически продляться без участия пользователя. При этом никто не мешает нам использовать данный сертификат для любых других служб, скажем - SSTP-сервера. Но здесь появляется проблема: после продления сертификат будет сохранен с новым именем (как можно было видеть выше в имя входят дата и время выпуска) и вам придется вручную изменять сертификат в настройках сервиса.

Получаем сертификаты при помощи скрипта

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

Сначала приведем полный текст, затем разберем его подробнее:

 1:log info "LE renewal"
 2
 3:local DomainName "chr72.example.com"
 4
 5/ip firewall filter
 6enable [find where comment="HTTP"]
 7
 8/certificate
 9remove [find where common-name=$DomainName]
10enable-ssl-certificate dns-name=$DomainName
11
12:delay 60s
13
14/certificate
15:local certName [get [find where common-name=$DomainName] name]
16
17/interface sstp-server server
18:set certificate=$certName
19
20/ip firewall filter
21disable [find where comment="HTTP"]

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

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

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

Следующим шагом определяем имя полученного сертификата и подключаем его к службе, в данном случае SSTP.

Последним шагом выключаем правило брандмауэра, открывающее доступ к веб-серверу и webfig.

Сертификаты Let's Encrypt выдаются сроком на 90 дней, поэтому следует запускать данный скрипт немного раньше, скажем раз в 85 дней, чтобы в случае чего у вас было время на анализ и исправление ситуации.

Надеемся, что данная статья будет вам полезна и поможет начать работать с сертификатами Let's Encrypt на роутерах Mikrotik.

Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал