Categories
Teknologi

Server MQTT, Instalasi dan contoh penggunaan untuk IOT

Lanjutan dari artikel sebelumnya, tulisan ini berisi cara instalasi dan contoh sederhana penggunaan server MQTT.

Sebelum melanjutkan, anda sudah harus memiliki server dengan sistem operasi linux. Apabila anda belum punya, anda bisa coba dengan virtualbox. Sistem operasi yang saya gunakan adalah Ubuntu 16.04 yang bisa di unduh disini: http://www.ubuntu.com/download

Berikut tutorialnya:
1. Tambahkan PPA Mosquitto

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update

2. Install Mosquitto

Sudo apt install mosquitto

Untuk mengetes, saya akan menggunakan Node.JS sebagai client MQTT.

1. Install Node.JS

sudo apt install nodejs
sudo apt install npm

2. Install requirement MQTT clientside untuk node.JS

npm install mqtt --save

3. Buat file baru dengan mengetik

touch testmqtt.js
nano testmqtt.js

4. Masukan baris code dibawah

var mqtt    = require('mqtt');
var client  = mqtt.connect('mqtt://localhost');

client.on('connect', function () {
  client.subscribe('contohtopik');
  client.publish('contohtopik', 'Halo dunia');
});

client.on('message', function (topic, message) {
  console.log(message.toString());
  client.end();
});

5. Quit nano dengan ctrl+o, lalu ctrl+x

6. Jalankan client dengan mengetik

nodejs testmqtt.js
Output program
Output program

Output dari program client diatas seharusnya seperti ini:

Apabila muncul seperti baris diatas, maka selamat ! anda telah berhasil menginstall mosquitto, server MQTT !

Selanjutnya mari kita membedah sedikit client yang saya berikan.

var client  = mqtt.connect('mqtt://localhost');

Digunakan untuk mengkoneksikan client, dalam hal ini program node.js ke server MQTT. apabila server MQTT dan client dalam komputer yang berbeda, silahkan ubah localhost menjadi IP dimana server MQTT berada.

client.on('connect', function () {
  client.subscribe('contohtopik');
  client.publish('contohtopik', 'Halo dunia');
});

akan otomatis dijalankan, ketika client berhasil terkoneksi ke server MQTT, dalam hal ini melakukan dua hal, yang pertama:

  client.subscribe('contohtopik');

Fungsi ini memberitahu server MQTT , bahwa program ini ingin menerima semua pesan dalam topik ‘contohtopik’

  client.publish('contohtopik', 'Halo dunia');

Fungsi ini memberitahu server MQTT bahwa program ini akan mengirimkan pesan ‘Halo dunia’ ke seluruh pengguna server MQTT yang melakukan subscribe ke topik ‘contohtopik’

client.on('message', function (topic, message) {
  console.log(message.toString());
  client.end();
});

Baris ini digunakan untuk melakukan sesuatu terhadap pesan-pesan yang diterima oleh client ini setelah di subscribe. message adalah pesannya, sementara topic adalah topik asal pesan tersebut. Pada program ini, yang dilakukan adalah mengeprint pesan ke console.

Alur lengkap program adalah:
1. program mengkoneksikan diri ke server MQTT
2. program akan subscribe ke topik ‘contohtopik’
3. program mengirimkan ‘Halo dunia’ ke topik ‘contohtopik’
4. server MQTT meneruskan pesan ‘Halo dunia’ ke seluruh subscriber topik.
5. program menerima pesan baru
6. program memprint pesan yang diterima
7. Halo dunia dimunculkan ke console.

Yang perlu di note adalah, client MQTT ini tidak terbatas hanya di Node.JS saja. Anda bisa menggunakan bahasa pemrograman apapun seperti PHP, C , C++ , Java di platform apapun misalnya web, desktop, mobile dan embedded  seperti arduino dan ESP 8266.   Hanya saja, library client yang digunakan berbeda dan memiliki cara pemrograman yang  berbeda juga, walaupun konsep dasar publish-subscribenya tetap sama.

Berikut adalah beberapa library dalam berbagai bahasa pemrogramman, dan biasanya sudah ada tutorial penggunaanya di link tersebut.

PHP : http://www.hivemq.com/blog/mqtt-client-library-encyclopedia-mosquitto-php
C# : https://github.com/ppatierno/m2mqtt
Java : https://github.com/fusesource/mqtt-client
C/C++: https://eclipse.org/paho/
Ruby : https://github.com/njh/ruby-mqtt
Python: https://pypi.python.org/pypi/paho-mqtt/1.1

Selamat mencoba 🙂

Categories
Teknologi

Mengenal Indikator Gembok (Https) pada URL Browser

Anda pasti pernah melihat kotak berwarna hijau, atau gembok berwarna hijau pada beberapa situs di internet. Tapi apakah anda mengetahui maksud adanya kedua simbol diatas? Pada post ini saya ingin membahas mengenai itu.

Arti sebenarnya dari simbol-simbol itu adalah aman atau tidaknya koneksi anda ke sebuah situs.

Sebelum kita membahas lebih jauh, kita perlu tahu,  seperti apa komunikasi yang aman? Tentunya komunikasi yang menjaga keamanan informasi. Definisi keamanan informasi menurut lembaga International Standard Organization adalah penjagaan kerahasiaan, integritas dan ketersedian informasi, walau ada berbagai-macam faktor lain yang dapat masuk dalam definisi keamanan informasi seperti keaslian, handal, bisa di pertanggung-jawabkan dan tidak bisa disangkal siapa yang mengirimkan informasi.

Keaslian berarti informasi tidak boleh berubah, informasi yang diterima penerima harus sesuai dengan saat dikirim dan harus ada cara untuk mengecek hal tersebut. Integritas berarti pertama, hanya penerima yang dimaksud oleh pengirim yang dapat melihat informasi dan kedua, tidak boleh ada yang pihak ketiga yang bisa berpura-pura menjadi salah satu pihak yang berkomunikasi. Ketersediaan informasi berarti kedua pihak yang berkomunikasi harus bisa melakukan komunikasi secara reliable, tidak bisa di interupsi atau diputuskan jalurnya oleh pihak lain.

Bagaimana cara browser anda menjamin faktor-faktor diatas dalam berkomunikasi? Salah satunya dengan melakukan koneksi menggunan protokol yang didesain untuk aman. Protokol adalah aturan atau standar yang mengatur atau mengijinkan terjadinya hubungan, komunikasi, dan perpindahan data antara dua atau lebih titik komputer. Protokol SSL/TLS adalah salah satu protokol yang sampai sekarang masih aman. Protokol ini yang digunakan oleh browser anda.

Protokol SSL/TLS menggunakan sertifikat, hash dan enkripsi untuk menjamin keamanan saat berkomunikasi. Sertifikat adalah tanda yang hanya dapat dibuat oleh orang yang mengirimkan informasi. Tanda ini bisa di cek keasliannya. Kita dapat mengibaratkan sertifikat sebagai tanda-tangan. Hash adalah fungsi satu arah, dengan kata lain tidak dapat di kembalikan ke bentuk semula yang digunakan untuk mengubah pesan menjadi nilai unik. Nilai ini harus berbeda-beda untuk setiap pesan. Sertifikat dan hash digunakan untuk menjamin integritas pesan. Enkripsi digunakan untuk mengubah informasi, sehingga hanya bisa dilihat apabila menggunakan password yang sama. Enkripsi digunakan untuk menjamin informasi hanya bisa dibaca oleh pihak yang memiliki akses terhadap informasi tersebut.

Bagaimana cara mencegah penyerang berpura-pura menjadi penerima informasi dengan sertifikat palsu? Protokol SSL/TLS menggunakan sistem yang disebut dengan Certificate Authority, Disebut juga dengan CA. CA adalah organisasi yang tanda-tangannya(sertifikatnya) sudah dipercaya oleh semua pihak. CA menandatangani tanda-tangan (sertifikat) pihak yang ingin berkomunikasi. Sertifikat ini kemudian bisa di cek keasliannya dengan cara dibandingan dengan tanda-tangan CA. CA berkewajiban untuk memeriksa identitas asli pihak-pihak yang ingin berkomunikasi, untuk mencegah adanya sertifikat palsu yang ditanda-tangani oleh CA.

Hal ini membawa kita kepada topik awal kita, Kotak hijau dan gembok menggambarkan seberapa aman koneksi kita, tetapi, apa perbedaannya?

  1. Kotak hijau dengan gembok hijau.
    Screen Shot 2015-10-17 at 5.37.42 PM
    Kotak hijau dengan gembok berwarna hijau berarti koneksi sangat aman. Kotak hijau berarti sertifikat penyedia layanan menggunakan extended validation. Hal ini berarti CA melakukan validasi identitas secara menyeluruh, sehingga sangat menyulitkan penipu untuk meminta CA menandatangani-sertifikat palsu seperti yang sudah di jelaskan diatas. Proses untuk mendapatkan sertifikat extended validation biasanya memakan waktu sekitar 2 -3 minggu dan harganya sangat mahal.
  2. Gembok hijau
    Screen Shot 2015-10-17 at 5.38.02 PM
    Gembok berwarna hijau berarti koneksi amanTidak adanya kotak hijau berarti sertifikat penyedia layanan tidak menggunakan Extended Validation. Validasi yang digunakan hanya sebatas dilihat dari pemilik domain (whois) atau organisasi. Proses mendapatkan sertifikat ini hanya memakan waktu beberapa menit saja dan biasanya biayanya murah. Sertifikat jenis ini lebih mudah dipalsukan, apabila terjadi kebocoran informasi pemilik domain, contohnya seperti password email pemilik domain. Namun perlu ditekankan koneksi jenis ini tetap aman selama tidak terjadi kesalahan seperti disebut diatas.
  3. Gembok segitiga kuning.
    yellowlock

    Gembok berwana kuning berarti mungkin tidak aman. Hal ini bisa terjadi karena beberapa hal, salah satu kemungkinannya karena penyedia layanan tidak menggunakan standar-standar yang di rekomendasikan, atau standar yang sudah usang dan tidak di gunakan lagi, baik pada sertifikatnya maupun pada algoritma enkripsinya. Perlu di tekankan, Mungkin tidak aman belum tentu tidak aman.
  4. Gembok silang merah.
    Screen Shot 2015-10-17 at 5.47.37 PM
     Gembok dengan tanda silang berarti tidak aman. Anda sebaiknya tidak melanjutkan menggunakan situs tersebut, karena bisa jadi sertifikat yang di gunakan tidak valid, sehingga tidak bisa di jamin keaslian penyedia layanan. Bisa juga simbol gembok silang terjadi karena algoritma enkripsi yang di gunakan sudah sangat usang, sehingga mudah dilihat isinya oleh pihak yang tidak bertanggung jawab. Bayangkan apabila yang dilihat adalah informasi pribadi seperti nomor kartu kredit anda.

Demikian penjelasan mengenai indikator. silahkan lihat link dibawah untuk penjelasan lebih lanjut.

https://en.wikipedia.org/wiki/Transport_Layer_Security
https://support.google.com/chrome/answer/95617?hl=en
https://en.wikipedia.org/wiki/Certificate_authority
https://support.mozilla.org/en-US/kb/how-do-i-tell-if-my-connection-is-secure

Semoga bermanfaat!