Как автоматически генерировать сертификаты в MikroTik CAPsMAN

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

Метод 1: создание сценариев с помощью Let’s Encrypt и Certbot
Let’s Encrypt — популярный центр сертификации, предлагающий бесплатные сертификаты SSL/TLS. Certbot — инструмент, упрощающий процесс получения и обновления сертификатов Let’s Encrypt. Вы можете использовать Certbot в сочетании со сценариями на устройстве MikroTik для автоматизации процесса генерации сертификата. Вот пример скрипта:

/system script add name=certbot-auto-generate source="# Run Certbot to generate certificates
:log info \"Running Certbot...\"
:execute \"/path/to/certbot-auto certonly --standalone -d yourdomain.com\"
:log info \"Certificates generated successfully!\"
# Import the generated certificates
:log info \"Importing certificates...\"
/certificate import file-name=yourdomain.com.crt passphrase=\"your_passphrase\"
/certificate import file-name=yourdomain.com.key passphrase=\"your_passphrase\"
:log info \"Certificates imported successfully!\""

Метод 2: использование OpenSSL и API RouterOS
OpenSSL — это универсальная библиотека с открытым исходным кодом, предоставляющая криптографические функции. Вы можете использовать OpenSSL и API RouterOS для создания и импорта сертификатов в MikroTik CAPsMAN. Вот пример фрагмента кода Python для создания самозаверяющего сертификата с использованием OpenSSL и его импорта в маршрутизатор CAPsMAN:

import os
import subprocess
# Generate the certificate
subprocess.call('openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem', shell=True)
# Import the certificate to MikroTik CAPsMAN
os.system('scp cert.pem admin@192.168.88.1:/flash/cert.pem')
os.system('scp key.pem admin@192.168.88.1:/flash/key.pem')
os.system('ssh admin@192.168.88.1 \"/certificate import file-name=cert.pem passphrase=your_passphrase\"')
os.system('ssh admin@192.168.88.1 \"/certificate import file-name=key.pem passphrase=your_passphrase\"')

Метод 3: использование протокола ACME и DNS Challenge
Протокол ACME является основой для выдачи сертификата Let’s Encrypt. Используя вызовы DNS, вы можете автоматизировать процесс создания сертификата без необходимости использования входящего HTTP-трафика. Этот подход требует программной настройки записей DNS для подтверждения владения доменом. Вот пример использования популярного клиента ACME acme.sh:

# Install acme.sh
curl https://get.acme.sh | sh
# Generate and install the certificate
export CAPSMAN_HOST=yourdomain.com
export CAPSMAN_SSH_USER=admin
export CAPSMAN_SSH_PASS=your_password
acme.sh --issue --dns dns_aws --cert-home /path/to/certificates --reloadcmd "sshpass -p $CAPSMAN_SSH_PASS ssh $CAPSMAN_SSH_USER@$CAPSMAN_HOST '/certificate import file-name=$CERT_FILE'"
# Import the generated certificate into CAPsMAN
sshpass -p $CAPSMAN_SSH_PASS scp /path/to/certificates/yourdomain.com/fullchain.cer $CAPSMAN_SSH_USER@$CAPSMAN_HOST:/flash/cert.pem
sshpass -p $CAPSMAN_SSH_PASS scp /path/to/certificates/yourdomain.com/yourdomain.com.key $CAPSMAN_SSH_USER@$CAPSMAN_HOST:/flash/key.pem
sshpass -p $CAPSMAN_SSH_PASS ssh $CAPSMAN_SSH_USER@$CAPSMAN_HOST '/certificate import file-name=cert.pem passphrase=your_passphrase'
sshpass -p $CAPSMAN_SSH_PASS ssh $CAPSMAN_SSH_USER@$CAPSMAN_HOST '/certificate import file-name=key.pem passphrase=your_passphrase'

Автоматизация процесса генерации сертификатов в MikroTik CAPsMAN имеет решающее значение для поддержания безопасности беспроводной сети. В этой статье мы рассмотрели три метода: написание сценариев с помощью Let’s Encrypt и Certbot, использование OpenSSL и API RouterOS, а также использование протокола ACME для решения задач DNS. Внедрив эти методы, вы можете упростить процесс и обеспечить защиту вашей установки CAPsMAN.