Membuat Mqtt Broker Memakai Mosquitto
by jq_rbp in Circuits > Wireless
172 Views, 0 Favorites, 0 Comments
Membuat Mqtt Broker Memakai Mosquitto
Berikut adalah salah satu cara membuat mqtt broker menggunakan mosquitto.
Penjelasan menyangkut pengaturan mosquitto dan pembuatan sertifikat (self-signed) yang nantinya dapat digunakan dalam komunikasi mqtt broker - klien.
Instal Mosquitto Mqtt Broker Dan Client
Untuk instalasi (tergantung distro yang digunakan) di sini menggunakan perintah apt:
$sudo apt install mosquitto mosquitto-clients
Pembuatan File User - Pass Untuk Mosquitto
Perintah dasar pembuatan file konfigurasi password:
$sudo mosquitto_passwd -c /etc/mosquitto/passwd <mosquitto user>
Contoh:
$sudo mosquitto_passwd -c /etc/mosquitto/passwd admin
Lalu ketik password di prompt yang keluar:
Password: <mosquitto user password>
Reenter password: <mosquitto user password>
Contoh di sini akan menggunakan:
username: admin
password: adminpass
Pembuatan Sertifikat (Self-Signed)
Unduh file generate-CA.sh:
$wget https://raw.githubusercontent.com/owntracks/tools/master/TLS/generate-CA.sh
$chmod a+rx ./generate-CA.sh
Atur Variabel "Shell" Yang Sedang Dijalankan
Sertifikat yang dibuat dengan perintah generate-CA.sh, harus dapat diikat dengan ip atau hostname dari mqtt broker. Oleh karena itu, sebelum menjalankan perintah ini, ada variabel "shell environment" yang harus diatur terlebih dahulu, yaitu IPLIST dan HOSTLIST.
Kedua variabel ini harus diisi dengan daftar alamat ip dan hostname dimana mosquitto akan dijalankan / diteruskan, misal:
$export IPLIST="172.13.14.15 127.0.0.1 192.168.1.1"
$export HOSTLIST="172.13.14.15 192.168.1.1 localhost raspberrypi.local a.contoh.com"
Tips:
- Ganti daftar ip dan hostname dari perintah di atas sesuai dengan konfigurasi network yang telah dibuat.
- Masukkan saja semua ip dan hostname yang nantinya akan dihubungi oleh semua mqtt klien, termasuk juga untuk klien yang akan dijalankan dalam localhost.
Buat File Sertifikat Ca Dan Key Untuk Mqtt Server
Jalankan perintah:
$sudo ./generate-CA.sh
Lalu copy ke dalam folder mosquitto:
$sudo cp ca.crt /etc/mosquitto/ca_certificates/
Bersama dengan sertifikat ca ini, biasanya terdapat juga file sertifikat lain dengan tipe .crt dan .key yang bisa digunakan untuk mosquitto. Sertifikat ini dapat di-copy juga ke dalam folder konfigurasi mosquitto.
Misal jika terdapat file localhost.crt dan localhost.key:
$sudo cp localhost.crt /etc/mosquitto/certs/
$sudo cp localhost.key /etc/mosquitto/certs/
Buat Sertifikat Untuk Klien
Jalankan perintah:
$sudo ./generate-CA.sh client klien
Jika berhasil nantinya akan terbentuk file sertifikat klien.crt dan klien.key yang bisa digunakan oleh mqtt klien untuk melakukan koneksi ke mosquitto broker.
Untuk itu sertifikat tersebut harus diubah properti akses-nya supaya dapat dibaca dan diakses oleh klien yang bersangkutan:
$sudo chmod a+rx klien.crt
$sudo chmod a+rx klien.key
File ca.crt juga dibutuhkan oleh klien dan terkadang juga perlu diubah properti akses-nya:
$sudo chmod a+rx ca.crt
Buat File Konfigurasi Untuk Mosquitto
Buka program nano untuk membuat file baru:
$sudo nano /etc/mosquitto/conf.d/default.conf
Masukkan / Copy konfigurasi ini ke dalam program nano:
allow_anonymous false password_file /etc/mosquitto/passwd listener 8883 cafile /etc/mosquitto/ca_certificates/ca.crt certfile /etc/mosquitto/certs/localhost.crt keyfile /etc/mosquitto/certs/localhost.key require_certificate true tls_version tlsv1.1
Simpan lalu keluar: tekan Ctrl-x lalu yes
Catatan:
- tls di sini diset dalam versi 1.1 karena versi ini merupakan versi yang cukup stabil dalam library wifi tls dari arduino project. Versi yang lebih baru dilaporkan masih memiliki bug yang perlu diperbaiki.
- Sesuaikan konfigurasi cafile, certfile, dan keyfile menjadi alamat file yang telah di-copy / dibuat sebelumnya.
Restart Mosquitto
$sudo systemctl restart mosquitto
Tes Koneksi Subscribe / Publish
Apabila semua telah berhasil dengan baik, koneksi ke mqtt server bisa dites dengan cara men-subscribe / publish ke sebuah dummy topic. Proses subscribe / publish dilakukan dengan menggunakan program untuk mqtt klien, seperti: mosquitto_sub dan/atau mosquitto_pub.
Untuk melakukan koneksi, kedua program klien ini harus menggunakan password dan sertifikat-sertifikat (ca.crt, klien.crt, dan klien.key) yang telah dibuat sebelumnya.
Dasar perintah subscribe:
$mosquitto_sub -h <mosquitto hostname> -p <mosquitto port> --cert <sertifikat .crt klien> --key <sertifikat klien.key> --cafile <sertifikat ca> --tls-version tlsv1.1 -u <mosquitto user> -P <mosquitto password> -t <topik>
Dasar perintah publish:
$mosquitto_pub -h <mosquitto hostname> -p <mosquitto port> --cert <sertifikat .crt klien> --key <sertifikat .key klien> --cafile <sertifikat ca> --tls-version tlsv1.1 -u <mosquitto user> -P <mosquitto password> -t <topik mqtt> -m <pesan>
Contoh subscribe:
$mosquitto_sub -h 127.0.0.1 -p 8883 --cert klien.crt --key klien.key --cafile ca.crt --tls-version tlsv1.1 -u admin -P adminpass -t "dummy"
Contoh publish:
$mosquitto_pub -h 127.0.0.1 -p 8883 --cert klien.crt --key klien.key --cafile ca.crt --tls-version tlsv1.1 -u admin -P adminpass -t "dummy" -m "halo mosquitto dummy"