らくがきちょう

なんとなく

MikroTik へ HTTPS で管理アクセス出来るように設定するには

RouterOS の管理はデフォルトで SSH や HTTP を利用出来ますが、HTTPS は無効になっています。よりセキュアに RouterOS へアクセス出来るよう、HTTPS を有効化してみます。WebUI と CLI のどちらでも設定出来ますが、今回は CLI から設定します。

前提条件 / 作業の流れ

今回は以下の環境で作業しました。

  • CHR
  • OS バージョンは 6.33.1

管理画面への HTTPS アクセスを有効化するのは、以下の流れで作業します。

  1. CA 証明書の発行
  2. 証明書の発行
  3. HTTPS を有効化し、証明書を紐付ける

デフォルトの状態

デフォルトで各サービスの状態は以下の通りです。4 番の HTTPS(www-ssl)が「X」であり、証明書が「none」になっているのが分かります。

[admin@MikroTik] > /ip service print
Flags: X - disabled, I - invalid
 #   NAME      PORT ADDRESS                                       CERTIFICATE
 0   telnet      23
 1   ftp         21
 2   www         80
 3   ssh         22
 4 X www-ssl    443                                               none
 5   api       8728
 6   winbox    8291
 7   api-ssl   8729                                               none

CA 証明書の発行

まず、CA 証明書を作成します。WebUI から設定したい場合は System → Certificates に設定項目があります。

/certificate add name=CERT-CA common-name=CERT-CA days-valid=3650 key-size=2048 key-usage=key-cert-sign,crl-sign
/certificate sign CERT-CA

これで証明書が発行されました。発行された CA 証明書を確認してみます。

[admin@MikroTik] > /certificate print
Flags: K - private-key, D - dsa, L - crl, C - smart-card-key, A - authority,
I - issued, R - revoked, E - expired, T - trusted
 #          NAME    CO.. SUBJECT-ALT-NAME                                  FI..
 0 K   A  T CERT-CA CE..                                                   0f..

[admin@MikroTik] > /certificate print detail
Flags: K - private-key, D - dsa, L - crl, C - smart-card-key, A - authority,
I - issued, R - revoked, E - expired, T - trusted
 0 K   A  T name="CERT-CA" common-name="CERT-CA" key-size=2048 days-valid=3650
            trusted=yes key-usage=key-cert-sign,crl-sign
            serial-number="1836354471"
            fingerprint="0faa227ca718f4ce4d8488c2749abfcffc8902e7e2b637f41b7e08
            81e9f5a2c9"
            invalid-before=nov/23/2015 01:32:46
            invalid-after=nov/20/2025 01:32:46

証明書の発行

次は証明書を発行します。

/certificate add name=CERT common-name=CERT days-valid=3650 key-size=2048

先に用意しておいた CA 証明書で、発行した証明書に署名します。

/certificate sign ca=CERT-CA CERT

証明書の状態を確認してみます。

[admin@MikroTik] > /certificate print
Flags: K - private-key, D - dsa, L - crl, C - smart-card-key, A - authority,
I - issued, R - revoked, E - expired, T - trusted
 #          NAME    CO.. SUBJECT-ALT-NAME                                  FI..
 0 K   A  T CERT-CA CE..                                                   0f..
 1 K   A    CERT    CERT                                                   3a..

[admin@MikroTik] > /certificate print detail
Flags: K - private-key, D - dsa, L - crl, C - smart-card-key, A - authority,
I - issued, R - revoked, E - expired, T - trusted
 0 K   A  T name="CERT-CA" common-name="CERT-CA" key-size=2048 days-valid=3650
            trusted=yes key-usage=key-cert-sign,crl-sign
            serial-number="1836354471"
            fingerprint="0faa227ca718f4ce4d8488c2749abfcffc8902e7e2b637f41b7e08
            81e9f5a2c9"
            invalid-before=nov/23/2015 01:32:46
            invalid-after=nov/20/2025 01:32:46

 1 K   A    name="CERT" common-name="CERT" key-size=2048 days-valid=3650
            trusted=no key-usage=digital-signature,key-encipherment,data-
          encipherment,key-cert-sign,crl-sign,tls-server,tls-client
            ca=CERT-CA serial-number="1"
            fingerprint="3ac6d520c426b1f2cc617b1f46772b74f96a611bd1d9dac161067b
            32588d5e89"
            invalid-before=nov/23/2015 01:39:01
            invalid-after=nov/20/2025 01:39:01

後述の「HTTPS を有効化し、証明書を紐付ける」設定を行うと MikroTik の管理画面の HTTPS でアクセス出来ました。但し、公式ページによると証明書は Trusted フラグを yes にしておけ、という記載があります。そこで証明書の Trusted フラグを yes に設定しておきます。

/certificate set 1 trusted=yes

Trusted フラグが設定されたことを確認しておきます。

[admin@MikroTik] > /certificate print detail
Flags: K - private-key, D - dsa, L - crl, C - smart-card-key, A - authority,
I - issued, R - revoked, E - expired, T - trusted
 0 K   A  T name="CERT-CA" common-name="CERT-CA" key-size=2048 days-valid=3650
            trusted=yes key-usage=key-cert-sign,crl-sign
            serial-number="1836354471"
            fingerprint="0faa227ca718f4ce4d8488c2749abfcffc8902e7e2b637f41b7e08
            81e9f5a2c9"
            invalid-before=nov/23/2015 01:32:46
            invalid-after=nov/20/2025 01:32:46

 1 K   A  T name="CERT" common-name="CERT" key-size=2048 days-valid=3650
            trusted=yes
            key-usage=digital-signature,key-encipherment,data-encipherment,key-
          cert-sign,crl-sign,tls-server,tls-client
            ca=CERT-CA serial-number="1"
            fingerprint="3ac6d520c426b1f2cc617b1f46772b74f96a611bd1d9dac161067b
            32588d5e89"
            invalid-before=nov/23/2015 01:39:01
            invalid-after=nov/20/2025 01:39:01

HTTPS を有効化し、証明書を紐付ける

いよいよ作業も大詰めです。HTTPS を有効化し、証明書を紐付ける為に HTTPS(www-ssl)の番号を確認しておきます。下記の例では 4 番になっています。

[admin@MikroTik] > /ip service print
Flags: X - disabled, I - invalid
 #   NAME      PORT ADDRESS                                       CERTIFICATE
 0   telnet      23
 1   ftp         21
 2   www         80
 3   ssh         22
 4 X www-ssl    443                                               none
 5   api       8728
 6   winbox    8291
 7   api-ssl   8729                                               none

HTTPS(www-ssl)の番号が確認出来たので、これを有効化し、証明書を紐付けます。

/ip service set 4 certificate=CERT disabled=no

これで HTTPS が有効化され、証明書も紐付けられました。

[admin@MikroTik] > /ip service print
Flags: X - disabled, I - invalid
 #   NAME      PORT ADDRESS                                       CERTIFICATE
 0   telnet      23
 1   ftp         21
 2   www         80
 3   ssh         22
 4   www-ssl    443                                               CERT
 5   api       8728
 6   winbox    8291
 7   api-ssl   8729                                               none

最後に、MikroTik に HTTPS でアクセスしてみます。自己証明書なので警告が表示されるはずですが(警告を無視すれば)WebUI が表示されたら設定完了です。