Jak głosi Wikipedia SCEP (Simple Certificate Enrollment Protocol) został zaprojektowany, aby sprawić że żądanie i wydanie cyfrowego certyfikatu będzie tak proste, jak tylko to możliwe. Spróbuję wyjaśnić działanie SCEP na przykładzie MikroTik, a ściślej to założenia są następujące:
- Mamy już działającego produkcyjnie CAPsMANa.
- Połączenie z istniejącymi CAP oparte jest na certyfikatach.
- Chcemy dodać kolejny CAP.
- RouterOS w wersji 7.x.x
Topologia sieci wygląda następująco:
CAPsMANem jest router o nazie MAN i IP: 10.0.0.1. Zarządzane przez niego accesspoint to AP1 i AP3. Dodajemy dodatkowy, zaznaczony na rysunku jako AP2 i IP: 10.0.0.254
Logujemy się na router MAN i odszukujemy certyfikat CA, jaki jest wygenerowany na tym routerze dla CAPsMAN. Można to zrobić z GUI Winbox (klikając po kolei Wireless
/CAPsMAN
/przycisk Manager
) lub z CLI za pomocą poniższego polecenia:
/caps-man manager print
Widać, że w moim przypadku w polu Generated CA Certificate
znajduje się wpis CAPsMAN-CA-07FCF1D2D988
. Wyeksportuję teraz ten certyfikat (bez klucza prywatnego):
/certificate/export-certificate CAPsMAN-CA-07FCF1D2D988 file-name=CAPsMAN-CA-07FCF1D2D988 type=pem
W powyższym poleceniu zmieniamy nazwę CAPsMAN-CA-07FCF1D2D988
na taką, jaka aktualnie jest na naszym CAPsMANie. Skutkiem prawidłowego wykonania polecenia jest utworzenie pliku CAPsMAN-CA-07FCF1D2D988.crt
:
Widać, że wygenerowany plik zapisał się w głównym katalogu pamięci.
Do prawidłowego działania SCEP
, plik .crt musi być zapisany w podkatalogu /scep/
.
Do przeniesienia pliku można wykorzystać usługę serwera ftp
oraz polecenie fetch
. włączamy serwer ftp
na naszym Mikrotik:
/ip/service/enable 1
W środowisku produkcyjnym nie zalecam zostawiać włączonej i nie zabezpieczonej usługi FTP, dlatego włączę ją tylko na chwilę, na potrzeby tego wpisu.
Polecenie, które kopiuje plik do nowej lokalizacji:
/tool fetch address=127.0.0.1 mode=ftp user=admin src-path=CAPsMAN-CA-07FCF1D2D988.crt dst-path=scep/CAPsMAN-CA-07FCF1D2D988.crt
Po prawidłowym wykonaniu polecenia otrzymujemy plik .crt w podkatalogu scep:
Przejdźmy do uruchomienia serwera SCEP
, na zakładce System/Certificates/SCEP Servers
dodajemy nowy serwer i wybieramy wcześniejszy certyfikat CA. Dodatkowo uzupełniamy pola Path
, Days
Valid
i Request Lifetime
.
MikroTik nie posiada oddzielnej instancji serwera http dla SCEP. Do prawidłowego działania serwera SCEP usługa www (IP/Services) musi być włączona. Można ograniczyć do niej dostęp np. za pomocą reguł firewall i address lists.
Ważność certyfikatu ustawiana jest w tym momencie na serwerze SCEP
i nie ma znaczenia , jaki czas ustawimy później w żądaniu.
/certificate/scep-server/add ca-cert=CAPsMAN-CA-07FCF1D2D988 path=/scep/ days-valid=3650 request-lifetime=00:10:00
To tyle jeżeli chodzi o konfigurację routera MAN
, przejdźmy teraz do AP2
.
Musimy wygenerować certyfikat dla AP2. Domyślnie CAPsMAN używa nazewnictwa CAP-AdresMAC
. Sprawdziłem i mój AP2
na interfejsie ether1
(tym interfejsem jest wpięty do MAN
) ma adres: 00:15:5D:4A:20:24. Przepisuję ten adres do poniższego polecenia (pomijając dwukropki):
/certificate add name=CAP-00155D4A2024 common-name=CAP-00155D4A2024 days-valid=10 key-usage=digital-signature,key-encipherment,data-encipherment
Podpisujemy wygenerowany certyfikat za pomocą SCEP:
Ważne jest podanie prawidłowej ścieżki serwer SCEP http://10.0.0.1/scep/
Wracamy do routera MAN
.
Ostatnią rzeczą, którą trzeba wykonać, to na routerze MAN
w System/Certificates/Requests
zatwierdzić żądanie. Bądź cierpliwy, żądanie może się pojawić po kilkunastu sekundach:
… i z powrotem na CAP
.
Po odczekaniu kliku, kilkunastu sekund, na routerze CAP
cenryfikat CAP-00155D4A2024
ma status idle
, a wartość pola Days Valid
zmieniła się na 3650
(wcześniej było to 10
) zgodnie z ustawieniami serwera SCEP
na routerze MAN
.
Koniec 🙂
Jeżeli pomogłem to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.
Jako ciekawostkę mogę dodać, że żądania można dodatkowo zabezpieczyć przez wykorzystanie OTP
(One Time Password). Aby to zrobić, generujemy OTP
na routerze MAN
:
Następnie podajemy wygenerowanie hasło na routerze AP2
, po kliknięciu przycisku Sign via SCEP
:
Co ciekawe, w wersji Router OS 7.15.3 nie udało mi się ukończyć żądania SCEP
dla CAPsMANv2
(zakładka WiFi
). W logu pojawiał się błąd:
scep client failure: requesting-certificate-failed