Сертификаты:Создание сертификатов средствами OpenSSL
В статье рассмотрено создание сертификатов с помощью утилиты OpenSSL, которая идет в комплекте с OpenVPN. Ниже приведен рекомендуемый порядок действий.
Полезные материалы по MikroTik
Углубленный курс "Администрирование сетевых устройств MikroTik" Онлайн-курс по MikroTik с дипломом государственного образца РФ. Много лабораторных работ с проверкой официальным тренером MikroTik. С нуля и до уровня MTCNA.
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik. Подписывайтесь
- Скачать пакет для установки: https://openvpn.net/index.php/download/community-downloads.html .
- Если вы хотите установить OpenVPN только для создания самоподписанных сертификатов, то надо выбрать только те пункты, которые отмечены на скриншоте выше. Если же вам нужен будет и сам OpenVPN, то отмечайте все пункты.
- Рекомендуется скопировать папку, например, в easy-rsa-copy.
- Переходим в эту папку, там есть файл Readme в котором описано всё что нужно сделать, т. е. то, что описано ниже.
- Запустить командную строку от имени администратора и перейти в директорию: cd «C:\Program Files\OpenVPN\easy-rsa» .
- Выполнить команду: init-config.bat . В результате должен будет появиться файл vars.bat.
- Редактируем vars.bat. Эти изменения не являются обязательными.
set KEY_COUNTRY=RU set KEY_PROVINCE=MoscowRegion set KEY_CITY=Moscow set KEY_ORG=n/a set KEY_EMAIL=n/a set KEY_CN=changeme set KEY_NAME=changeme set KEY_OU=n/a set PKCS11_MODULE_PATH=n/a set PKCS11_PIN=1234
- Выполнить команду: vars.
- Выполнить команду: clean-all . В результате должна будет появиться директория “keys”. А результат выдачи командной строки выглядеть, как на скриншоте.br />

- Создание основного сертификата: build-ca . Набираем, отвечаем на вопросы. На всех вопросах жмем Enter, кроме “Common Name” и “Name”. В этих полях вводим ca.br />

- создание ключа Диффи-Хеллмана: build-dh .
- Создаем сертификат сервера: build-key-server server . Поле Common Name должно быть уникальным и не совпадать ни с одним другим сертификатом.
Если сертификаты будут использоваться для SSTP, то в качестве параметра “common-name” сертификата сервера обязательно должен быть указан либо его IP-адрес, либо привязанное к этому адресу доменное имя.
При этом подключение от Windows-клиента пройдет только от того, что указано в параметре “common-name”. Набираем, отвечаем на вопросы. На всех вопросах жмем Enter, кроме “Common Name” и “Name”. В этих полях вводим server. На два вопроса в конце отвечаем “y”.

- Создаем сертификат клиента: build-key client1 . Поле Common Name должно быть уникальным и не совпадать ни с одним другим сертификатом. Набираем, отвечаем на вопросы. На всех вопросах жмем Enter, кроме “Common Name” и “Name”. В этих полях вводим server. На два вопроса в конце отвечаем “y”.

- Если клиентов будет более одного, то для каждого необходимо создать соответствующее количество сертификатов с соответствующим изменением имени.
- Вот и всё. Созданные сертификаты и ключи к ним лежат в папке keys.
- ca.crt — открытый сертификат Root CA, можно распространять свободно
- ca.key — закрытый ключ сертификата
- test-server.crt — открытый сертификат сервера
- test-server.key — закрытый ключ сервера
- test-client.crt — открытый сертификат клиента
- test-client.key — закрытый ключ клиента
Остальные файлы интереса особого для нас не представляют.

Имея закрытый ключ можно создавать сертификаты, подписанные этим ключом, поэтому ни в коем случае не передавайте некому закрытый ключ Root CA.
Полезные материалы по MikroTik
Углубленный курс "Администрирование сетевых устройств MikroTik" Онлайн-курс по MikroTik с дипломом государственного образца РФ. Много лабораторных работ с проверкой официальным тренером MikroTik. С нуля и до уровня MTCNA.
На Telegram-канале Mikrotik сэнсей можно получить доступ к закрытой информации от официального тренера MikroTik. Подписывайтесь
Генерация сертификатов на Mikrotik для OpenVPN
Часто для тех или иных сервисов требуется усилить безопасность с помощью сертификатов.
Однако в случае с Mikrotik — зачастую сертификаты нужны для организации OpenVPN сервера.
Многие генерируют сертификаты на своем ПК, а потом загружают и импортируют их в RouterOS, сам некоторое время пользовался этим способом. Но такой метод имеет и недостатки — ты не можешь управлять сертификатами или списком отзывов, что чревато потерей той самой безопасности. В данном случае удобней генерировать сертификаты непосредственно в RouterOS и при необходимости производить их экспорт, или отзывать на нём же.
-
System — Certificates — клацаем +

Сначала создаем корневой сертификат CA.
Name: CA — Можно любое, но так проще ориентировать потом.
Country: RU — Двухбуквенное обозначение страны
State: Moscow — Регион\область
Locality: Moscow — Населенный пункт
Organization: Название вашей организации
Unit: Ovpn — Название отдела (да, в моем случае отдел овпн)
Common Name: CA — Отображаемое\общедоступное имя
Subject Alt. Name — Необязательно поле (публичный ip, DNS, или email)
Days Valid = 3650 — Срок годности сертификата
Key Size — Длинна ключа сертификата, чем больше значение — тем сложнее сломать. Если вы параноик — используйте значение 8192, если нет 2048 в полне достаточно
На вкладке Key Usage выбираем crl sign и key cert. sign

- ОК — ПКМ по сертификату — Sign
- В открывшемся окне оставляем CA и указываем CA CRL Host
Желательно, белый IP или FQDN имя роутера для списка отозванных сертификатов. Если такого нет — можно использовать 127.0.0.1 или своё имя.
По завершении процесса сертификат должен поменять статус на KLAT
K — Private Key
L — CRL
A — Authority
T — Trusted

Далее создаем сертификат сервера
- Снова жмем +
- General — примерно тоже, что и в предыдущем случае, только в качестве имени используем Server
- Переключаемся на вкладку Key Usage и снимаем флажки:
- crl sign
- data enciphement
- key cert sign
- Устанавливаем флаг
- tls server

- OK — Подписываем ПКМ — Sign
Certificate — выбираем новый сертификат сервера
CA — Указываем CA, созданный на предыдущем шаге

По завершении сертификат должен принять статус KIT
K — Private Key
I — Issued
T — Trusted
Далее создаем сертификат(ы) клиента:
- Снова нажимаем + и заполняем General
Поля с именем естественно Client

- На вкладке Key Usage оставляем только tls clinet

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

- Apply — Copy
Сохраняем и подписываем.
После подписания статус сертификата станет KA
K — Private key
A — Authority
Можно переходить к настройке сервера.
Другие статьи по теме:
- Настройка OpenVPN Server на Mikrotik RouterOS
- Сборка opvn.conf для клиента Mikrotik
- RADIUS Server на базе WinSrv 2019 для Mikrotik
Как создать сертификат для впн для микротик
В первую очередь для нашего VPN сервера необходимо создать сертификаты.
Создание ключей и сертификатов
Создание CA сертификата
Можно использовать сторонные средства для создания ключей и сертификатов, например Easy-RSA, но я буду это делать средствами роутера Mikrotik.
Заходим System > Certificates
Создаём корневой сертификат нашего центра сертификации (СА).

Поля которые обязательно заполнить выделены красным цветом, а зелёным которые желательно.
Name — Имя нашего сертификата. Обычно делают одинаковыми с Common Name
Common Name — Имя нашего центра сертификации
Key size — Размер ключа. Больше — лучше, но и соответственно нагрузка на железо больше.
Days Valid — Срок действия

Дальше во вкладке Key Usage отмечаем crl sign и key cert. sign и нажимаем Apply
Потом подписываем наш сертификат нажав Sign. В окне которое появится заполняем CA CRL Host
CA CRL Host — нужно указать IP адрес по которому будем доступен наш VPN сервер, или даже лучше если у вас есть доменное имя, которое ссылается на этот IP.

Создание сертификата сервера
Добавляем ещё один сертификат. Во вкладке General, заполняем поля как и для CA сертификата, только меняем Name и Common Name

Переходим во вкладку Key Usage
Отмечаем digital signature, key encipherment и tls server. Нажимаем Apply и Sign, в поле CA выбираем созданный ранее наш сертификат и жмём кнопку Start

Создание сертификата клиента
Добавляем ещё один сертификат и в полях Name и Common Name пишем название клиентского сертификата, желательно название должно быть осмысленное, чтобы через какое то время долго не искать чей это сертификат.

Во вкладке Key Usage оставляем только tls client, дальше Apply и Sign, потом указываем CA и жмём Start

Если всё сделано правильно, то список сертификатов должен выглядеть примерно так:

Экспортируем сертификаты для клиента
Нажимаем правой клавишей на клиентском сертификате, выбираем Export. В окне экспорта обязательно указываем пароль(не менее 8 символов).
Без указания пароля закрытые ключи не выгрузятся.

Таким же образом экспортируем CA сертификат, только без указания пароля.
Переходим в Files и видим наши сертификаты

Для дальнейшей настройки клиентов нам необходимо будет их загрузить с роутера. Для этого выделяем сертификаты и нажимаем правой клавишей мышки > Download
Настройка OpenVPN сервера
Создадим пул адресов.
Диапазон в котором клиенты будут получать айпишники.
Заходим IP > Pool и добавляем новый

Далее создадим профиль для наших VPN клиентов.
Используется для настройки одинаковых параметров для нескольких клиентов.
Заходим в PPP > Profiles и добавляем новый


Также есть дополнительные интересные опции:
- Вкладка Protocol
Use Encryption — Использовать шифрование. Ставим yes
Use Compression — Использовать сжатие. Ставим No . Есть смысл использовать только если у вас низкоскоростной канал связи. Но нагрузка на процессор будет больше. - Вкладка Limits
Only One — Одновременно с одним логином и паролем, который мы укажем далее. Можно будет подключатся к серверу только один раз, для одного клиента.

Создадим учётную запись для клиентов.
Здесь нужно придумать Имя, Пароль, а также указать наш сервис ovpn и профиль ovpn, который мы создали

Включаем OpenVPN сервер
PPP > Interface и нажимаем OVPN Server
Отмечаем галочкой Enabled
Port — порт меняем при необходимости, или оставляем по дефолту
Mode — Режим работы. ethernet — tap , ip — tun
Default Profile — Указываем профиль который мы создали
Certificate — Выбираем наш сертификат сервера
Require Client Certificate — Включаем проверку клиентских сертификатов сервером.
Auth — Оставляем только sha1
Cipher — Шифр. Оставляем aes 256

Настройка Firewall
Открываем порт
Для подключения к VPN серверу необходимо открыть порт. В нашем случае это 1194 tcp
IP > Firewall

На вкладке Action, Action соответственно Accept
Настройка OpenVPN клиента на роутере Mikrotik
Загрузим на устройство наши сертификаты.
Открываем Files жмём Upload

Импорт сертификатов
System > Certificates
Для начала импортируем CA сертификат
Хотя CA сертификат для настройки OpenVPN клиента на Mikrotik роутере не нужен. Необходим только клиентский сертификат. Но пусть будет на всякий случай.

Делаем импорт клиентского сертификата с указанием пароля, который был при экспорте. Сначала сертификат, потом приватный ключ.


Флаги возле импортированых сертификатов должны быть как у меня(LAT для CA и KT для клиентского сертификата).

Настройка клиента
Открываем PPP

Connect To — IP адрес или доменное имя нашего VPN сервера
Port — Порт
Mode — Режим работы
User — Пользователь
Password — Пароль
Profile — Профиль
Certificate — Импортированный сертификат клиента
Auth — sha1
Cipher — aes 256
Use Peer DNS — Использование DNS сервера
Add Default Route — Использовать как маршрут по умолчанию

Проверяем доступность VPN сервера.
Для этого открываем терминал на клиенте и запускаем пинг на сервер. В нашем случае это 10.1.1.1

Если пинг есть, то клиент подключился к серверу.
Настройка OpenVPN клиента linux
Для настройки клиента в linux системе необходимо для начала установить openvpn пакет, если его нет.
apt update apt install openvpn
Теперь ложим наши сертификаты в директорию /etc/openvpn/client
Создаем в этой же папке конфиг для клиента client.conf. Между тегов вставляем содержимое наших сертификатов.
client tls-client dev tun proto tcp ### Mikrotik uses TCP only remote 192.168.87.32 ### or IP address port 1194 ### If you use defult port resolv-retry infinite nobind persist-key persist-tun askpass /etc/openvpn/client/user.conf auth-user-pass /etc/openvpn/client/auth.conf auth SHA1 verb 3 cipher AES-256-CBC ;route 192.168.1.0 255.255.255.0
Так же создаём файл auth.conf и пишем в него наш логин/пароль который создавали на роутере во вкладке Secrets.
И ещё один файл user.conf, в котором будет содержатся наш пароль заданый при экспорте ключей.
Теперь пробуем запустить наш OpenVPN клиент.
systemctl start openvpn-client@client
И сразу смотрим статус нашего сервиса на наличие ошибок.
systemctl status openvpn-client@client
Если ошибок нет, пробуем пинговать 10.1.1.1
Настройка OpenVPN клиента Windows
Конфиг файл делаем немного другой.
client1.ovpn
client tls-client dev tun proto tcp #### Mikrotik uses TCP only remote 192.168.87.32 ### or IP address port 1194 ####If you use defult port resolv-retry infinite nobind persist-key persist-tun auth-user-pass auth SHA1 verb 3 cipher AES-256-CBC
Настройка OpenVPN клиента Android
Для настройки на телефоне, сначала скачиваем и ставим офф. OpenVPN клиент, потом берём конфиг как для Windows и в клиенте импортируем. Дальше запускаем.
Настройка OVPN на Mikrotik
Имеется организация с главным офисом и 2-мя филиалами. Требуется организовать между этими отделениями сеть VPN на базе OpenVPN с использованием сертификатов. Для этого будем использовать оборудование Mikrotik. Главный маршрутизатор (сервер сети VPN) установлен в главном офисе. В филиалах установлены маршрутизаторы, подключающиеся к главному офису через Интернет.
2. Создание сертификатов на Mikrotik – сервере OVPN
Для создания сертификатов зайдем на маршрутизатор Mikrotik, который будет сервером сети VPN. Подготавливаем шаблоны для сертификатов и ключей. Для этого открываем New terminal и вводим последовательно следующие команды (можно просто закопипастить)
add name=ca-template common-name=myCa key-usage=key-cert-sign,crl-sign days-valid=4000
add name=server-template common-name=server days-valid=4000
add name=client1-template common-name=client1 days-valid=4000
add name=client2-template common-name=client2 days-valid=4000
В окне System –>Certificates наблюдаем следующую картину:
Далее необходимо снять все галки в настройках server-template, client1-template и client2-template в разделе Key Usage.
Далее создаем сертификат сервера,
sign ca-template ca-crl-host=XXX.XXX.XXX.XXX name=myCa
где XXX.XXX.XXX.XXX – IP-адрес сервера, на который будут идти подключения клиентов и далее с его помощью подписываем ключи
sign ca=myCa server-template name=server
sign ca=myCa client1-template name=client1
sign ca=myCa client2-template name=client2
Делаем сертификаты доверенными
set myCa trusted=yes
set server trusted=yes
Производим экспорт сертификатов с паролем 12345678 (помним его для процедуры импорта на клиентах OVPN)
export-certificate myCa export-passphrase=12345678
export-certificate server export-passphrase=12345678
export-certificate client1 export-passphrase=12345678
export-certificate client2 export-passphrase=12345678
В окне Files видим следующее
На этом подготовка сертификатов завершена, можно перетащить их себе на компьютер, чтобы в дальнейшем импортировать на маршрутизаторы-клиенты.
3. Настройка сервера OVPN
Открываем PPP
В Profiles создать профиль ovpn-profile, ничего не менять, применить.
В PPP-secrets создаем пароли с назначением сервиса и IP-адресов
При назначении IP-адресов используем правило: на каждый линк – 4 IP-адреса: 1-сетевой, 2-IP сервера, 3 – IP клиента, 4- широковещательный. Маску каждого линка позднее сделаем /30 (т.е. 255.255.255.252) В нашем случае будет так:
Линк 1: 192.168.10.0, 192.168.10.1, 192.168.10.2, 192.168.10.3
Линк 2: 192.168.10.4, 192.168.10.5, 192.168.10.6, 192.168.10.7
Переходим на вкладку Interface и жмем кнопку OVPN Server
Ставим галочку Enabled
Port:1194 (можно поменять на нестандартный)
Default Profile: ovpn-profile
Required Clent Certificate
Cipher blowfish 128 aes256
разрешаем заходить на порт OVPN сервера tcp 1194
разрешаем управление снаружи через winbox 8291
перемещаем оба правила над запрещающими правилами файервола (в нашем случае в самом верху)
4. Настройка клиента OVPN
Заходим в Files на маршрутизаторе-клиенте и перетаскиваем туда файлы сертификатов и ключей
Заходим в System Certificates и делаем импорт сертификатов клиента CRT + KEY с паролем 12345678, а также CRT сервера в таком же порядке
В PPP создаем новый OVPN-клиент
Задаем параметры адрес, куда подключаемся, пользователя, пароль, сертификат (если надо), тип шифрования
На микротике-сервере OVPN нужно еще добавить маршрутизацию
В терминале прописываем:
/routing ospf network
add name=MainOffice area-id=192.168.6.0
# 192.168.6.0/24 — сеть за локальным интерфейсом центрального роутера
add area=MainOffice network=192.168.6.0/24
add area=backbone network=192.168.10.0/24
(отдадим VPN сеть с маской /24 для удобства дальнейшего добавления узлов сети VPN)
На клиентcких микротиках тоже самое.
/routing ospf network
add name=Client1 area-id=192.168.2.0
add area= Client1 network=192.168.2.0/24
add area=backbone network=192.168.10.0/24
/routing ospf network
add name=Client2 area-id=192.168.7.0
add area= Client2 network=192.168.7.0/24
add area=backbone network=192.168.10.0/24
