Mosquitto broker dapat kita konfigurasi agar client membutuhkan authentication menggunakan username dan password sebelum terhubung ke broker, sehingga akan lebih aman. Namun ini belum sepenuhnya aman karena meskipun menggunakan kombinasi username dan password jika ditransmit tanpa encryption (SSL), tetapi setidaknya ini memberikan keamanan dengan cara yang paling mudah.
Berikut catatan saya untuk bagaimana mengonfigurasi username password pada mosquitto broker yang running pada Docker.
Jika belum memiliki container mosquitto maka perlu dibuat terlebih dahulu. Dalam hal ini saya menggunakan OS linux untuk host dari Docker. Saya membuat direktori untuk Mosquitto Broker.
mkdir -p /var/local/mosquitto/{config,logs,data}
Kemudian kita perlu membuat file konfigurasi mosquitto.conf
sudo nano /var/local/mosquitto/config/mosquitto.conf
Pertama kita buat file konfigurasi mosquitto.conf, dikarenakan saat ini menggunakan OS basis linux, saya buat file configurasi dengan command dibawah.
sudo nano /var/local/mosquitto
Jika sudah buat seperti digambar atas tekan CTRL+O untuk menyimpan dan CTRL+X untuk exit dari text editor. Dan jalankan command dibawah untuk membuat mosquitto container.
sudo docker run -it --name mosquitto -p 1882:1883 -p 9002:9001 -v /var/local/mosquitto/data:/mosquitto.data -v /var/local/mosquitto/logs:/mosquitto/log -v /var/local/mosquitto/config/mosquitto.config:/mosquitto/config/mosquitto.conf eclipse-mosquitto
Untuk memastikan container sudah terbuat kita dapat pastikan menggunakan command
sudo docker ps
Untuk mengaktifkan username dan password, kita perlu masuk ke linux sh (bergantung pada OS dari docker atau host).
sudo docker exec -it mosquitto sh
kemudian jalankan command untuk menambahkan username sebagai berikut:
mosquitto_passwd -c /mosquitto/config/passwd jazali
Catatan:
- mosquitto_passwd -> tool untuk memanage file password dari mosquitto. detail cek disini
- “-c” -> ini opsi dari command mosquitto_passwd untuk membuat baru username. “-d” untuk delete user, dan tanpa opsi untuk menambakan username.
- “/mosquitto/config/passwd” -> merupakan direktori untuk file password yang dikonfigurasi. Disini file password diletakkan didalam container bukan di host docker.
- “jazali” -> username yang ditambahkan.
setelah jalankan command menambahkan username nanti kita akan diminta untuk memasukkan password untuk username yang ditambahkan tersebut.
untuk keluar dari command sh linux kita bisa tekan CTRL+D. Kemudian kita lanjut update mosquitto.conf untuk mengaktifkan username dan password sebagai berikut.
sudo nano /var/local/mosquitto/config/mosquitto.conf
Restart mosquitto container diperlukan untuk konfigurasi berefek. Ketika sudah running kembali kita dapat cek untuk client mencoba terhubung ke broker tanpa password, apa yang terjadi.
Dari gambar 5 diatas terlihat jika client tanpa menggunakan username dan password tidak bisa terhubung ditunjukan “connection error”. Dan bila dipantau dari mosquitto log, disana ada client yang tidak dapat terhubung karena authorize fail.
Sekarang kita mencoba untuk client menggunakan username dan password, berhasil terhubung seperti dibawah ini.