Memasang SSL Let’s Encrypt Mikrotik

Memasang SSL Let’s Encrypt Mikrotik

  • Post Category:Info

Mikrotik dapat diakses melalui http dan https, disinilah problem dimulai. Apabila Anda mengakses mikrotik dengan port 80 (http) maka data akan terkirim plain tidak terenkripsi, akan berbahaya apabila koneksi dari Anda ke mikrotik ada yang menyadap atau menggunakan proxy. Kenapa berbahaya? — Karena semua informasi, termasuk username dan password akan terkirim secara plain dan dapat dilihat oleh intruder atau “Man in the Middle“.

Apabila Anda mengakses mikrotik via internet, sudah pasti akan ada iklan yang menyusupi, ini umum terjadi apabila anda menggunakan koneksi ISP ternama yang menyisipkan kode iklannya di setiap koneksi http.

Bagaimana jika HTTPS? sesuai namanya, https akan mengenkripsi semua data dari dan ke mikrotik Anda. lebih secure bukan? Bahkan apabila ada intruder atau sisipan iklan maka tidak akan berhasil karena browser akan melakukan validasi data yang dikirimkan pengguna ke server, sehingga intruder tidak akan bisa menyisipkan kode iklan di data yang terkirim.

Kita tidak akan mendalami poses data anatara http dan https, namun kita akan mempraktekkan bagaimana memasang SSL Let’s encrypt di mikrotik agar proses transfer kita lebih secure.

Let’s encrypt memberikan setifikat SSL gratis kepada semua orang selama 3 bulan dan dapat diperpanjang. Let’s encrypt hanya membutuhkan proses validasi saja ketika kita ingin membuat dan memperpanjang sertifikat SSL nya. Adapun metode validasinya adalah sebagai berikut:

  1. webroot. LE akan membuat file dan direktory khusus di folder tertentu sesuai dengan domain anda. biasanya digunakan di webserver
  2. standalone. LE akan menjalankan program dan membuka port tertentu untuk proses validasi, ini berguna apabila anda tidak mempunyai webserver atau domain yang akan di validasikan tidak membuka port http/https
  3. domain, LE akan melakukan validasi domain dengan mencantumkan record TXT ke domain yang akan divalidasikan
  4. dan beberapa metode lain, silakan cek di halaman Challange ACME

Kali ini kita akan menggunakan domain untuk proses validasinya, untuk itu mohon siapkan beberapa perangkat:

  1. Server yang mempunyai program acme/let’s encypt
  2. Mikrotik, ip yang digunakan adalah 192.168.1.2
  3. Domain, Anda membutuhkan akses ke dns server, domain yang akan digunakan adalah mikrotik-ssl-blog.wow.net.id

Silahkan sesuaikan IP dan domain dengan kebutuhan anda. Berikut adalah langkah langkah nya:

Pasang certbot/acme di server

Dalam artikel ini kita akan menggunakan Ubuntu, silahkan masuk ke server menggunakan ssh, bisa menggunakan putty di Windows atau terminal jika di Linux

wownet@X1-Carbon:~$ ssh ubuntu
Warning: Permanently added 'ubuntu' (RSA) to the list of known hosts.
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-1020-kvm x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

0 updates can be installed immediately.
0 of these updates are security updates.

Last login: Tue Nov  3 11:28:26 2020 from ::1
wownet@ubuntu:~$ 

Membuat ssh key

SSH key ini dibutuhkan agar ketika login ke mikrotik tidak perlu password, tujuanya pada saat update ssl dikemudian hari kita tidak pelu melakukan input user dan password sehingga proses pembaharuan otomatis dapat berjalan lancar

Berikut adalah langkah langkahnya, tetap di server yang sudah Anda login diatas, silakan ketik “ssh-keygen” dan enter apabila ada perintah memasukkan password, tujuanya agar ssh key tersebut tidak mempunyai password

wownet@ubuntu:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wownet/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/wownet/.ssh/id_rsa
Your public key has been saved in /home/wownet/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:aqdLo8k1fL1ueT/tTUqUDwNLOGKM0bip9P0TuXt9C58 wownet@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|      .o         |
|      .+.  .     |
|      .o+ o o    |
|    . o. . o o . |
|   . o .S  .. =  |
|    ......o  . + |
|      O o..+ o..o|
|   . * *  *.o.=o=|
|    + o. o+= .oE+|
+----[SHA256]-----+

Salin SSH key ke mikrotik

Langkah selanjutnya adalah menyalin file ssh publik yaitu id_rsa.pub ke mikrotik, kita akan menggunakan scp untuk menyalin, perintahnya adalah: scp -P PORT_SSH ~/.ssh/id_rsa.pub IP_ROUTER:/id_rsa.pub berikut contohnya: wownet@ubuntu:~$ scp -P 30022 .ssh/id_rsa.pub 192.168.1

wownet@ubuntu:~$ scp -P 30022 .ssh/id_rsa.pub 10.85.255.2:id_rsa.pub
wownet@10.85.255.2's password: 
id_rsa.pub                                    100%  576    90.3KB/s   00:00  

Setelah itu silakan login ke mikrotik dan buat ssh publik key tersebut diasosiasikan ke user yang diinginkan, pada contoh kali ini adalah user wownet

wownet@ubuntu:~$ ssh 192.168.1.2
wownet@192.168.1.2's password:

...

/command        Use command at the base level
[wownet@Mikrotik] > /user ssh-keys import user=wownet public-key-file=id_rsa.pub 

Test kembali dengan login menggunakan user yang sama, apabila tidak dimintai password berarti sudah berhasil

Memasang script pembantu

Untuk membantu membuat ssl, kita akan menggunakan script milik Konstantine Gimpel, yang terdapat di GitHub, silakan lakukan perintah dibawah ini

wownet@ubuntu:~$ sudo apt install git 
wownet@ubuntu:~$ git clone https://github.com/gitpel/letsencrypt-routeros
Cloning into 'letsencrypt-routeros'...
remote: Enumerating objects: 82, done.
remote: Total 82 (delta 0), reused 0 (delta 0), pack-reused 82
Unpacking objects: 100% (82/82), 35.24 KiB | 137.00 KiB/s, done.
wownet@loadbalancer:~$ cd letsencrypt-routeros/       

Edit file letsencrypt-routeros.settings, dan sesuaikan dengan username, ip router milik Anda, berikut adalah config yang telah disesuaikan dengan config saya

Membuat sertifikat SSL

Langkah selanjutnya adalah memasang Let’s encrypt yang disebut dengan certbot dan remove certbot yang ada (apabila terpasang)

wownet@ubuntu:~$ sudo apt remove certbot -y
wownet@ubuntu:~$ sudo snap install core; sudo snap refresh core
core 16-2.47.1 from Canonical✓ installed
snap "core" has no updates available
wownet@ubuntu:~$ sudo snap install --classic certbot
certbot 1.9.0 from Certbot Project (certbot-eff✓) installed
wownet@ubuntu:~$ 

Domain yang akan kita pasang SSL adalah mikrotik-ssl-blog.wow.net.id, untuk itu silakan eksekusi perintah dibawah ini dan jangan menekan tombol enter

wownet@ubuntu:~$ sudo certbot certonly --manual --preferred-challenges dns -d mikrotik-ssl-blog.wow.net.id --debug-challenges --post-hook /home/wowrack/letsencrypt-routeros/letsencrypt-routeros.sh --manual-public-ip-logging-ok
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for mikrotik-ssl-blog.wow.net.id

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.mikrotik-ssl-blog.wow.net.id with the following value:

W3APPWt7fMyhdWjb9qlckfIt-dsy0j6nTOr2fr-fhCI

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Dari pesan di atas kita perlu menambahkan record TXT ke domain mikrotik-ss-blog.wow.net.id dengan record W3APPWt7fMyhdWjb9qlckfIt-dsy0j6nTOr2fr-fhCI, dengan record  _acme-challenge.mikrotik-ssl-blog.wow.net.id

Silakan buka dns Anda, tergantung dari bagaimana Anda mengatur DNS record Anda, di kami menggunakan web interface PowerAdmin yang terhubung dengan dns server PowerDNS. Apabila Anda menggunakan provider seperti cloudflare silakan menambahkan record tersebut di cloudflare

Berikut adalah tangkapan layar untuk pengaturan di PowerAdmin

Sedangkan apabila anda menggunakan cloudflare, tampilan nya adalah sebagai berikut

Apabila sudah, silakan simpan dan tunggu ~30 menit untuk menunggu propagasi DNS. Setelah mengunggu 30 menit, silakan buka kembali putty Anda dan tekan enter. Kemudian akan muncul tulisan sebagai berikut:

Waiting for verification...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Challenges loaded. Press continue to submit to CA. Pass "-v" for more info about
challenges.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Tekan enter sekali lagi dan akan muncul output berikut:

Cleaning up challenges
Running post-hook command: /home/wownet/letsencrypt-routeros/letsencrypt-routeros.sh
Output from post-hook command letsencrypt-routeros.sh:
Usage: /home/wownet/letsencrypt-routeros/letsencrypt-routeros.sh or /home/wownet/letsencrypt-routeros/letsencrypt-routeros.sh [RouterOS User] [RouterOS Host] [SSH Port] [SSH Private Key] [Domain]

                   uptime: 1h53m42s
                  version: 6.46.7 (long-term)
               build-time: Sep/07/2020 07:38:56
              free-memory: 6.1MiB
             total-memory: 32.0MiB
                      cpu: MIPS 24Kc V7.4
                cpu-count: 1
            cpu-frequency: 650MHz
                 cpu-load: 99%
           free-hdd-space: 5.5MiB
          total-hdd-space: 16.0MiB
  write-sect-since-reboot: 615
         write-sect-total: 549097
               bad-blocks: 0%
        architecture-name: smips
               board-name: hAP mini
                 platform: MikroTik


Connection to RouterOS Successful!

     certificates-imported: 1
     private-keys-imported: 0
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0

     certificates-imported: 0
     private-keys-imported: 1
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0


IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/mikrotik-ssl-blog.wow.net.id/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/mikrotik-ssl-blog.wow.net.id/privkey.pem
   Your cert will expire on 2021-02-01. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


Apabila hasilnya seperti di atas maka ssl Anda telah dibuat, ssl let’s encrypt sudah di upload ke mikrotik dan Anda bisa cek dengan perintah berikut:

[wownet@Mikrotik] > /certificate print detail where common-name=mikrotik-ssl-blog.wow.net.id   
Flags: K - private-key, L - crl, C - smart-card-key, A - authority, I - issued, R - revoked, E - expired, T - trusted 
 0 K     T name="cert1.pem_0" issuer=C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3 digest-algorithm=sha256 key-type=rsa common-name="mikrotik-ssl-blog.wow.net.id" key-size=4096 subject-alt-name=DNS:mikrotik-ssl-blog.wow.net.id 
           days-valid=90 trusted=yes key-usage=digital-signature,key-encipherment,tls-server,tls-client serial-number="0327F413E70BC21A305E62273BD1740F66A9" fingerprint="31ef9c738eaa0c94888265946f41ad178a45eeac84c3d45f9b24934fb6c43db5" 
           invalid-before=nov/03/2020 11:59:53 invalid-after=feb/01/2021 11:59:53 expires-after=12w5d20h7m44s 
[wownet@Mikrotik] > 

upload juga file fullchain yang terdapat di /etc/letsencrypt/archive/mikrotik-ssl-blog.wow.net.id/fullchain1.pem untuk menghindari CA missing pada pesan browser, berikut adalah cara upload ke mikrotik dari server :

wownet@ubuntu:~$ ftp 10.85.255.2                             
Connected to 10.85.255.2.
220 Mikrotik FTP server (MikroTik 6.46.7) ready
Name (10.85.255.2:wownet): wownet
331 Password required for wownet
Password:
230 User wownet logged in
Remote system type is UNIX.
ftp> put fullchain1.pem
local: fullchain1.pem remote: fullchain1.pem
200 PORT command successful
150 Opening ASCII mode data connection for 'fullchain1.pem'
226 ASCII transfer complete
3324 bytes sent in 0.00 secs (21.8622 MB/s)
ftp> exit
221 Closing

Instal fullchain tersebut dengan melakukan login ke mikrotik dan eksekusi perintah berikut

[wownet@Mikrotik] > /certificate import file-name=ssl/fullchain1.pem 
passphrase: 
     certificates-imported: 1
     private-keys-imported: 0
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0

[wowrack@Mikrotik] > 

Untuk memasang setifikat tersebut pada https, silakan login kembali ke mikrotik dan ketikkan perintah dibawah ini

[wownet@Mikrotik] > /ip service set www-ssl certificate=cert1.pem_0


Cek dengan browser

Setelah melakukan pemasangan certificate, silakan mencoba mengakses domain Anda, contohnya https://mikrotik-ssl-blog.wow.net.id

Apabila pada icon kunci berwarna hijau atau tidak merah silang, maka pemasangan SSL Anda berhasil