Найти тему
Steam Paul

массовая выгрузка сертификатов с RouterOS

Не секрет, что RouterOS от Микротик пользуется большой популярностью для решения различных сетевых задач, например есть уже готовый OpenVPN сервер со своим центром сертификации. Можно выпускать сертификаты, сколько душе угодно и пусть пользователи авторизуются. Проблема начинается, когда задумываешься о резервном копировании всего этого добра. Во встреченных мною статьях пишут, что это не большая проблема, ведь любой сертификат можно выгрузить. Выгрузить действительно можно. По одному. А теперь представьте, что у вас небольшая организация, где по удаленке сидят 100 - 300 человек и у каждого сертификат. А если 500-700? выгрузишь их по одному и сразу в дурку кукушку подлечивать. Поэтому делюсь своим опытом скриптописания на эту тему.

:local count [certificate print count-only]
:local name
:for x from=0 to=$count do={
:set name ("crt_".$x)
certificate export-certificate $x export-passphrase=12345678 file-name=$name
:delay 2
}

Если коротко, то этот скрипт получит количество ключей в хранилище и, в цикле, обращаясь к ним по очереди по номерам выгрузит все в корень устройства. Обратите внимания, что при экспорте нужно обязательно указать пародь 8+ символов, иначе закрытый ключ выгружен не будет.

Дальше полученные файлы ключей спокойно можно сложить на FTP, или на резервный сервер RouterOS (по FTP), где, опять же скриптом их загрузить. Напомню, что делается это при помощи /tool fetch.

В сухом остатке получаем вот такой скрипт:

:local count [certificate print count-only]
:local name
:local name1
:local name2
:local sysname [/system identity get name]
:local dstname1
:local dstname2
:for x from=0 to=$count do={
:set name ("crt_".$x)
:set name1 ($name.crt)
:set name2 ($name.key)
:set dstname1 ("mikrotik/".$sysname."/cert/".$name1)
:set dstname2 ("mikrotik/".$sysname."/cert/".$name2)
certificate export-certificate $x export-passphrase=12345678 file-name=$name
/tool fetch address=192.168.1.1 src-path=$name1 user=ftp-user password=ftp-password upload=yes mode=ftp dst-path=$dstname1
/tool fetch address=192.168.1.1 src-path=$name2 user=ftp-user password=ftp-password upload=yes mode=ftp dst-path=$dstname2
:delay
/file remove $name1
/file remove $name2
}

Уже этот скрипт выгрузит все сертификаты и сложит их на FTP с адресом 192.168.1.1 в каталог mikrotik/<имя_вашего_устройства>/cert/.

Когда я только начинал знакомиться с РоутерОС я тоже думал:"зачем на каждый случай по переменной заводить? лучше в переменную только изменяющиеся данные запихивать", но потом понял, что параметры, состоящие частично из текста, частично из переменной в команду передать не удается, либо всё текстом, либо одной переменной.

Вот, пожалуй, и всё, пользуйтесь на здоровье.

#RouterOS #mikrotik #скрипты #CA #удостоверяющий центр #сертификаты