{"id":39053,"date":"2026-02-13T12:40:50","date_gmt":"2026-02-13T09:40:50","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39053"},"modified":"2026-02-13T12:40:50","modified_gmt":"2026-02-13T09:40:50","slug":"mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/","title":{"rendered":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]"},"content":{"rendered":"<p><body><\/p>\n<h2>Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]<\/h2>\n<p>MQTT (Message Queuing Telemetry Transport), \u00f6zellikle k\u0131s\u0131tl\u0131 kaynaklara sahip cihazlar ve d\u00fc\u015f\u00fck bant geni\u015fli\u011fine sahip a\u011flar i\u00e7in tasarlanm\u0131\u015f, hafif bir yay\u0131nla\/abone ol (publish\/subscribe) mesajla\u015fma protokol\u00fcd\u00fcr. Nesnelerin \u0130nterneti (IoT) projelerinde, sens\u00f6r verilerinin toplanmas\u0131ndan cihaz kontrol\u00fcne kadar geni\u015f bir kullan\u0131m alan\u0131na sahiptir. Mosquitto ise, MQTT protokol\u00fcn\u00fc uygulayan a\u00e7\u0131k kaynakl\u0131, hafif ve g\u00fcvenilir bir mesajla\u015fma arac\u0131s\u0131d\u0131r (broker). Bu makalede, Ubuntu 18.04 i\u015fletim sistemi \u00fczerine Mosquitto MQTT arac\u0131s\u0131n\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131 ve g\u00fcvenli hale getirilece\u011fini ad\u0131m ad\u0131m inceleyece\u011fiz. Bu &#8220;h\u0131zl\u0131 ba\u015flang\u0131\u00e7&#8221; k\u0131lavuzu, \u00f6zellikle g\u00fcvenlik ad\u0131mlar\u0131na odaklanarak, Mosquitto&#8217;yu \u00fcretim ortamlar\u0131na yak\u0131n bir \u015fekilde kullan\u0131ma haz\u0131r hale getirmeyi ama\u00e7lamaktad\u0131r.<\/p>\n<h3>MQTT ve Mosquitto&#8217;ya Giri\u015f<\/h3>\n<p>MQTT, TCP\/IP \u00fczerinde \u00e7al\u0131\u015fan bir uygulama katman\u0131 protokol\u00fcd\u00fcr. Client&#8217;lar (istemciler) bir arac\u0131ya (broker) ba\u011flan\u0131r, belirli konulara (topics) abone olur veya bu konulara mesajlar yay\u0131nlar. Arac\u0131, mesajlar\u0131 ilgili konulara abone olan t\u00fcm istemcilere iletmekten sorumludur. Bu model, do\u011frudan ba\u011flant\u0131 kurmak zorunda kalmadan bir\u00e7ok cihaz\u0131n birbiriyle ileti\u015fim kurmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Mosquitto, Eclipse Vakf\u0131 taraf\u0131ndan geli\u015ftirilen ve C dilinde yaz\u0131lm\u0131\u015f, MQTT v3.1, v3.1.1 ve v5.0 standartlar\u0131n\u0131 destekleyen pop\u00fcler bir MQTT arac\u0131 uygulamas\u0131d\u0131r. Hafif yap\u0131s\u0131, d\u00fc\u015f\u00fck sistem kaynaklar\u0131 t\u00fcketimi ve kolay yap\u0131land\u0131r\u0131labilir olmas\u0131 nedeniyle IoT projelerinde s\u0131kl\u0131kla tercih edilir. Ancak, varsay\u0131lan kurulumda Mosquitto genellikle anonim eri\u015fime izin verir ve \u015fifreleme kullanmaz, bu da onu g\u00fcvenlik a\u00e7\u0131klar\u0131 a\u00e7\u0131s\u0131ndan savunmas\u0131z hale getirir. Bu makale, bu g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 nas\u0131l kapataca\u011f\u0131n\u0131z\u0131 detayl\u0131ca a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu k\u0131lavuzu takip etmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>Ubuntu 18.04 Sunucusu:<\/strong> SSH eri\u015fimine sahip bir Ubuntu 18.04 sanal veya fiziksel sunucu.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Komutlar\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>sudo<\/code> yetkisine sahip bir kullan\u0131c\u0131.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Terminal komutlar\u0131 ve dosya d\u00fczenleme konular\u0131nda temel d\u00fczeyde bilgi.<\/p>\n<p>Kurulum i\u015flemine ba\u015flamadan \u00f6nce sunucunuzun g\u00fcncel oldu\u011fundan emin olal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p>Bu komutlar, sisteminizdeki paket listelerini g\u00fcnceller ve mevcut t\u00fcm paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltir.<\/p>\n<h3>Mosquitto Kurulumu<\/h3>\n<p>Ubuntu 18.04&#8217;\u00fcn varsay\u0131lan depolar\u0131nda Mosquitto&#8217;nun eski bir s\u00fcr\u00fcm\u00fc bulunabilir. En g\u00fcncel \u00f6zellikleri ve g\u00fcvenlik yamalar\u0131n\u0131 almak i\u00e7in Mosquitto geli\u015ftiricileri taraf\u0131ndan sa\u011flanan PPA (Personal Package Archive) deposunu kullanmak en iyi yakla\u015f\u0131md\u0131r.<\/p>\n<h4>Mosquitto PPA Deposunu Ekleme<\/h4>\n<p>\u0130lk olarak, PPA deposunu sistemimize eklememiz gerekiyor:<\/p>\n<pre><code class=\"language-bash\">sudo add-apt-repository ppa:mosquitto-dev\/mosquitto-ppa -y<\/code><\/pre>\n<p>Bu komut, Mosquitto PPA&#8217;s\u0131n\u0131 sisteminizin yaz\u0131l\u0131m kaynaklar\u0131na ekler. Depoyu ekledikten sonra, yeni paket listelerini almak i\u00e7in <code>apt update<\/code> komutunu tekrar \u00e7al\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<h4>Mosquitto ve \u0130stemcilerini Kurma<\/h4>\n<p>\u015eimdi Mosquitto arac\u0131s\u0131n\u0131 ve onunla birlikte gelen istemci ara\u00e7lar\u0131n\u0131 (test ama\u00e7l\u0131 kullanaca\u011f\u0131m\u0131z <code>mosquitto_pub<\/code> ve <code>mosquitto_sub<\/code>) kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install mosquitto mosquitto-clients -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Mosquitto servisi otomatik olarak ba\u015flayacak ve sistem ba\u015flang\u0131c\u0131nda etkinle\u015ftirilecektir.<\/p>\n<h4>Kurulumu Do\u011frulama<\/h4>\n<p>Mosquitto servisinin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edelim:<\/p>\n<pre><code class=\"language-bash\">systemctl status mosquitto<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Active: active (running)<\/code> ifadesini g\u00f6rmelisiniz. Bu, Mosquitto arac\u0131s\u0131n\u0131n ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<h3>Temel Yap\u0131land\u0131rma ve \u0130lk Test<\/h3>\n<p>Mosquitto, varsay\u0131lan olarak <code>\/etc\/mosquitto\/mosquitto.conf<\/code> dosyas\u0131ndan yap\u0131land\u0131rma ayarlar\u0131n\u0131 okur. Varsay\u0131lan kurulumda, Mosquitto genellikle anonim eri\u015fime izin verir ve herhangi bir kimlik do\u011frulama veya \u015fifreleme kullanmaz. Bu, h\u0131zl\u0131 testler i\u00e7in uygun olsa da, ger\u00e7ek d\u00fcnya uygulamalar\u0131 i\u00e7in kesinlikle g\u00fcvenli de\u011fildir.<\/p>\n<h4>Anonim Eri\u015fimle \u0130lk Test<\/h4>\n<p>\u015eu anki yap\u0131land\u0131rmada, Mosquitto anonim eri\u015fime izin verdi\u011fi i\u00e7in, herhangi bir kullan\u0131c\u0131 ad\u0131 veya \u015fifre olmadan mesaj yay\u0131nlayabilir ve abone olabilirsiniz.<\/p>\n<p>Bir terminal penceresinde bir abone (subscriber) ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">mosquitto_sub -h localhost -t \"test\/topic\"<\/code><\/pre>\n<p>Bu komut, <code>localhost<\/code> adresindeki Mosquitto arac\u0131s\u0131na ba\u011flan\u0131r ve <code>test\/topic<\/code> konusuna abone olur.<\/p>\n<p>Ba\u015fka bir terminal penceresinde bir yay\u0131nc\u0131 (publisher) ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">mosquitto_pub -h localhost -t \"test\/topic\" -m \"Merhaba MQTT!\"<\/code><\/pre>\n<p><code>mosquitto_sub<\/code> penceresinde &#8220;Merhaba MQTT!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz. Bu, Mosquitto kurulumunuzun ba\u015far\u0131l\u0131 oldu\u011funu ve temel i\u015flevselli\u011finin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h3>G\u00fcvenlik Ad\u0131mlar\u0131 &#8211; Vazge\u00e7ilmez Bir Gereklilik<\/h3>\n<p>Mosquitto&#8217;yu \u00fcretim ortam\u0131nda veya internete a\u00e7\u0131k bir \u015fekilde kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, g\u00fcvenlik ad\u0131mlar\u0131 hayati \u00f6neme sahiptir. A\u015fa\u011f\u0131daki ad\u0131mlar, Mosquitto kurulumunuzu daha g\u00fcvenli hale getirecektir:<\/p>\n<p>1.  Anonim Eri\u015fimi Devre D\u0131\u015f\u0131 B\u0131rakma<br \/>\n2.  Kullan\u0131c\u0131 Ad\u0131 ve \u015eifre Do\u011frulamas\u0131 Ekleme<br \/>\n3.  Eri\u015fim Kontrol Listeleri (ACL&#8217;ler) ile Yetkilendirme<br \/>\n4.  TLS\/SSL ile \u0130leti\u015fim \u015eifrelemesi<\/p>\n<h4>1. Anonim Eri\u015fimi Devre D\u0131\u015f\u0131 B\u0131rakma<\/h4>\n<p>\u0130lk ve en \u00f6nemli g\u00fcvenlik ad\u0131m\u0131, anonim kullan\u0131c\u0131lar\u0131n arac\u0131ya ba\u011flanmas\u0131n\u0131 engellemektir. Bu, yetkisiz ki\u015filerin mesajlar\u0131n\u0131za eri\u015fmesini veya sisteminize y\u00fck bindirmesini \u00f6nler.<\/p>\n<p>Mosquitto yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Dosyan\u0131n herhangi bir yerine (genellikle sonuna do\u011fru) a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\">allow_anonymous false<\/code><\/pre>\n<p>De\u011fi\u015fikli\u011fi kaydetmek i\u00e7in <code>CTRL+O<\/code>, ard\u0131ndan <code>ENTER<\/code> ve <code>CTRL+X<\/code> tu\u015flar\u0131na bas\u0131n.<\/p>\n<p>Mosquitto servisini yeniden ba\u015flat\u0131n ki de\u011fi\u015fiklikler etkin olsun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<p>\u015eimdi anonim olarak abone olmaya veya yay\u0131nlamaya \u00e7al\u0131\u015f\u0131rsan\u0131z, Mosquitto ba\u011flant\u0131y\u0131 reddedecektir:<\/p>\n<pre><code class=\"language-bash\">mosquitto_sub -h localhost -t \"test\/topic\"\n<h2>\u00c7\u0131kt\u0131: Connection Refused: not authorised.<\/code><\/pre>\n<\/h2>\n<p>Bu beklenen bir davran\u0131\u015ft\u0131r ve Mosquitto&#8217;nun anonim eri\u015fimi ba\u015far\u0131yla engelledi\u011fini g\u00f6sterir.<\/p>\n<h4>2. Kullan\u0131c\u0131 Ad\u0131 ve \u015eifre Do\u011frulamas\u0131<\/h4>\n<p>Anonim eri\u015fimi devre d\u0131\u015f\u0131 b\u0131rakt\u0131\u011f\u0131m\u0131za g\u00f6re, art\u0131k yetkili kullan\u0131c\u0131lar\u0131n ba\u011flanabilmesi i\u00e7in kullan\u0131c\u0131 ad\u0131 ve \u015fifre tabanl\u0131 kimlik do\u011frulamas\u0131n\u0131 yap\u0131land\u0131rmam\u0131z gerekiyor. Mosquitto, \u015fifreleri g\u00fcvenli bir \u015fekilde saklamak i\u00e7in bir parola dosyas\u0131 kullan\u0131r.<\/p>\n<h5>Parola Dosyas\u0131 Olu\u015fturma<\/h5>\n<p>Mosquitto, <code>mosquitto_passwd<\/code> yard\u0131mc\u0131 program\u0131n\u0131 kullanarak \u015fifreleri hash&#8217;lenmi\u015f bi\u00e7imde bir dosyaya kaydeder. \u0130lk kullan\u0131c\u0131y\u0131 olu\u015ftururken <code>-c<\/code> (create) bayra\u011f\u0131n\u0131 kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd <kullanici_adi><\/code><\/pre>\n<p>\u00d6rne\u011fin, <code>mqttuser<\/code> ad\u0131nda bir kullan\u0131c\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd mqttuser<\/code><\/pre>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, sizden yeni bir \u015fifre girmeniz ve onaylaman\u0131z istenecektir.<\/p>\n<p>Daha sonra ek kullan\u0131c\u0131lar eklemek i\u00e7in <code>-c<\/code> bayra\u011f\u0131n\u0131 kullanmay\u0131n, aksi takdirde mevcut dosyan\u0131n \u00fczerine yaz\u0131l\u0131r ve \u00f6nceki kullan\u0131c\u0131lar silinir. Sadece yeni kullan\u0131c\u0131 ad\u0131 ile komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd \/etc\/mosquitto\/passwd <yeni_kullanici_adi><\/code><\/pre>\n<p>\u00d6rne\u011fin, <code>adminuser<\/code> ad\u0131nda ikinci bir kullan\u0131c\u0131 ekleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd \/etc\/mosquitto\/passwd adminuser<\/code><\/pre>\n<p>Parola dosyas\u0131n\u0131n i\u00e7eri\u011fini kontrol edebilirsiniz (\u015fifreler hash&#8217;lenmi\u015f olmal\u0131d\u0131r):<\/p>\n<pre><code class=\"language-bash\">sudo cat \/etc\/mosquitto\/passwd<\/code><\/pre>\n<h5>Mosquitto&#8217;yu Parola Dosyas\u0131n\u0131 Kullanacak \u015eekilde Yap\u0131land\u0131rma<\/h5>\n<p>\u015eimdi Mosquitto&#8217;ya bu parola dosyas\u0131n\u0131 kullanmas\u0131n\u0131 s\u00f6ylememiz gerekiyor. Yap\u0131land\u0131rma dosyas\u0131n\u0131 tekrar d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p><code>allow_anonymous false<\/code> sat\u0131r\u0131n\u0131n alt\u0131na veya uygun bir yere a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\">password_file \/etc\/mosquitto\/passwd<\/code><\/pre>\n<p>Dosyay\u0131 kaydedip Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h5>Kullan\u0131c\u0131 Ad\u0131 ve \u015eifre ile Test Etme<\/h5>\n<p>\u015eimdi olu\u015fturdu\u011funuz kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile abone olmaya ve yay\u0131nlamaya \u00e7al\u0131\u015f\u0131n:<\/p>\n<pre><code class=\"language-bash\"># Abone ol\nmosquitto_sub -h localhost -t \"test\/topic\" -u mqttuser -P <mqttuser_sifresi>\n\n<h2>Yay\u0131nla<\/h2>\nmosquitto_pub -h localhost -t \"test\/topic\" -m \"Merhaba Yetkili Kullan\u0131c\u0131!\" -u mqttuser -P <mqttuser_sifresi><\/code><\/pre>\n<p>Mesaj\u0131n ba\u015far\u0131yla iletildi\u011fini g\u00f6rmelisiniz. E\u011fer yanl\u0131\u015f kullan\u0131c\u0131 ad\u0131 veya \u015fifre girerseniz, <code>Connection Refused: not authorised.<\/code> hatas\u0131 al\u0131rs\u0131n\u0131z.<\/p>\n<h4>3. Eri\u015fim Kontrol Listeleri (ACL&#8217;ler)<\/h4>\n<p>Kullan\u0131c\u0131 ad\u0131 ve \u015fifre do\u011frulamas\u0131, kimlerin ba\u011flanabilece\u011fini kontrol eder. Eri\u015fim Kontrol Listeleri (ACL&#8217;ler) ise, ba\u011flanan kullan\u0131c\u0131lar\u0131n hangi konulara (topics) okuma ve yazma eri\u015fimine sahip olaca\u011f\u0131n\u0131 belirlemenizi sa\u011flar. Bu, farkl\u0131 kullan\u0131c\u0131lar\u0131n farkl\u0131 yetkilere sahip olmas\u0131n\u0131 sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h5>ACL Dosyas\u0131 Olu\u015fturma<\/h5>\n<p>Mosquitto i\u00e7in bir ACL dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/acl.conf<\/code><\/pre>\n<p>Bu dosyaya kullan\u0131c\u0131lar\u0131n ve konular\u0131n eri\u015fim kurallar\u0131n\u0131 ekleyece\u011fiz. \u0130\u015fte bir \u00f6rnek:<\/p>\n<pre><code class=\"language-\"># Varsay\u0131lan olarak t\u00fcm kullan\u0131c\u0131lara t\u00fcm konulara eri\u015fimi reddet\n<h2>Bu, spesifik olarak izin verilmeyen her \u015feyin yasaklanmas\u0131n\u0131 sa\u011flar<\/h2>\n<h2>Bu sat\u0131r\u0131n aktif olmas\u0131 i\u00e7in Mosquitto yap\u0131land\u0131rmas\u0131nda 'allow_anonymous false' ve 'password_file' tan\u0131ml\u0131 olmal\u0131d\u0131r.<\/h2>\n<h2>Sadece 'user' tan\u0131mlamalar\u0131 ile izin verilir.<\/h2>\n\n<h2>'mqttuser' kullan\u0131c\u0131s\u0131 sadece 'sens\u00f6rler\/oda1' konusuna okuma eri\u015fimine sahip<\/h2>\nuser mqttuser\ntopic read sens\u00f6rler\/oda1\n\n<h2>'adminuser' kullan\u0131c\u0131s\u0131 t\u00fcm konulara okuma ve yazma eri\u015fimine sahip<\/h2>\nuser adminuser\ntopic readwrite #<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<br \/>\n*   <code>mqttuser<\/code> sadece <code>sens\u00f6rler\/oda1<\/code> konusuna abone olabilir (okuma).<br \/>\n*   <code>adminuser<\/code> ise <code>#<\/code> joker karakteri sayesinde t\u00fcm konulara hem abone olabilir hem de mesaj yay\u0131nlayabilir.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h5>Mosquitto&#8217;yu ACL Dosyas\u0131n\u0131 Kullanacak \u015eekilde Yap\u0131land\u0131rma<\/h5>\n<p>Mosquitto&#8217;ya bu ACL dosyas\u0131n\u0131 kullanmas\u0131n\u0131 s\u00f6ylemek i\u00e7in yap\u0131land\u0131rma dosyas\u0131n\u0131 tekrar d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\">acl_file \/etc\/mosquitto\/acl.conf<\/code><\/pre>\n<p>Dosyay\u0131 kaydedip Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h5>ACL&#8217;leri Test Etme<\/h5>\n<p>\u015eimdi ACL&#8217;lerin do\u011fru \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 test edelim:<\/p>\n<p><strong>Test 1: <code>mqttuser<\/code>&#8216;\u0131n izin verilen konuya eri\u015fimi<\/strong><\/p>\n<pre><code class=\"language-bash\"># mqttuser, sens\u00f6rler\/oda1 konusuna abone olmal\u0131 (izinli)\nmosquitto_sub -h localhost -t \"sens\u00f6rler\/oda1\" -u mqttuser -P <mqttuser_sifresi>\n\n<h2>Ba\u015fka bir terminalde adminuser ile bu konuya yay\u0131n yap<\/h2>\nmosquitto_pub -h localhost -t \"sens\u00f6rler\/oda1\" -m \"Oda1 S\u0131cakl\u0131k: 24C\" -u adminuser -P <adminuser_sifresi><\/code><\/pre>\n<p><code>mqttuser<\/code>&#8216;\u0131n terminalinde mesaj\u0131 g\u00f6rmelisiniz.<\/p>\n<p><strong>Test 2: <code>mqttuser<\/code>&#8216;\u0131n izin verilmeyen konuya eri\u015fimi<\/strong><\/p>\n<pre><code class=\"language-bash\"># mqttuser, kontrol\/kap\u0131 konusuna abone olmaya \u00e7al\u0131\u015f (izinli de\u011fil)\nmosquitto_sub -h localhost -t \"kontrol\/kap\u0131\" -u mqttuser -P <mqttuser_sifresi>\n<h2>\u00c7\u0131kt\u0131: Connection Refused: not authorised. veya ba\u011flant\u0131 kurulur ancak mesaj alamaz.<\/h2>\n<h2>Mosquitto loglar\u0131nda 'denied by ACL' g\u00f6rebilirsiniz.<\/code><\/pre>\n<\/h2>\n<p><code>mosquitto_sub<\/code> komutu ba\u011flant\u0131 kurabilir ancak <code>adminuser<\/code> bu konuya yay\u0131n yapt\u0131\u011f\u0131nda <code>mqttuser<\/code> mesaj\u0131 alamaz. Bu, ACL&#8217;nin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<p><strong>Test 3: <code>mqttuser<\/code>&#8216;\u0131n herhangi bir konuya yay\u0131n yapma denemesi<\/strong><\/p>\n<p>ACL&#8217;mizde <code>mqttuser<\/code>&#8216;a herhangi bir konuya yazma izni vermedik.<\/p>\n<pre><code class=\"language-bash\"># mqttuser, sens\u00f6rler\/oda1 konusuna yay\u0131n yapmaya \u00e7al\u0131\u015f (izinli de\u011fil)\nmosquitto_pub -h localhost -t \"sens\u00f6rler\/oda1\" -m \"Mesaj g\u00f6nderiyorum\" -u mqttuser -P <mqttuser_sifresi>\n<h2>\u00c7\u0131kt\u0131: Connection Refused: not authorised. veya ba\u011flant\u0131 kurulur ancak yay\u0131n ba\u015far\u0131s\u0131z olur.<\/code><\/pre>\n<\/h2>\n<p>Bu testler, ACL&#8217;lerinizin do\u011fru bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamal\u0131d\u0131r.<\/p>\n<h4>4. TLS\/SSL ile \u0130leti\u015fim \u015eifrelemesi<\/h4>\n<p>Kullan\u0131c\u0131 ad\u0131\/\u015fifre ve ACL&#8217;ler kimlik do\u011frulama ve yetkilendirme sa\u011flarken, mesajlar\u0131n a\u011f \u00fczerinden \u015fifresiz g\u00f6nderilmesi hala bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131d\u0131r. TLS\/SSL (Transport Layer Security\/Secure Sockets Layer) kullanarak t\u00fcm MQTT ileti\u015fimini \u015fifreleyebiliriz. Bu, mesajlar\u0131n gizlili\u011fini ve b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flar.<\/p>\n<p>Bu ad\u0131mda, kendi kendimize imzal\u0131 (self-signed) sertifikalar olu\u015fturaca\u011f\u0131z. \u00dcretim ortamlar\u0131nda ise, g\u00fcvenilir bir Sertifika Yetkilisi&#8217;nden (CA) al\u0131nan sertifikalar\u0131 kullanman\u0131z \u015fiddetle tavsiye edilir. Ancak h\u0131zl\u0131 ba\u015flang\u0131\u00e7 i\u00e7in kendi sertifikalar\u0131m\u0131z\u0131 olu\u015fturmak yeterlidir.<\/p>\n<h5>Sertifika Yetkilisi (CA) Olu\u015fturma<\/h5>\n<p>\u00d6nce, sertifikalar\u0131 saklamak i\u00e7in bir dizin olu\u015ftural\u0131m ve bu dizine ge\u00e7elim:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/etc\/mosquitto\/certs\nsudo cd \/etc\/mosquitto\/certs<\/code><\/pre>\n<p>\u015eimdi bir k\u00f6k Sertifika Yetkilisi (CA) anahtar\u0131 ve sertifikas\u0131 olu\u015ftural\u0131m. Bu CA, hem sunucu hem de (iste\u011fe ba\u011fl\u0131 olarak) istemci sertifikalar\u0131m\u0131z\u0131 imzalayacak.<\/p>\n<pre><code class=\"language-bash\"># 1. CA i\u00e7in \u00f6zel anahtar olu\u015fturma\nsudo openssl genrsa -out ca.key 2048\n\n<h2>2. CA sertifikas\u0131 olu\u015fturma (kendi kendini imzalar)<\/h2>\n<h2>Ortak Ad (Common Name) olarak sunucunuzun FQDN'sini (\u00f6rn: mqtt.example.com) veya IP adresini girmeniz \u00f6nemlidir.<\/h2>\nsudo openssl req -new -x509 -days 365 -key ca.key -out ca.crt<\/code><\/pre>\n<p><code>openssl req<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, sizden baz\u0131 bilgiler istenecektir:<br \/>\n*   <code>Country Name (2 letter code)<\/code>: TR<br \/>\n*   <code>State or Province Name<\/code>: Istanbul<br \/>\n*   <code>Locality Name<\/code>: Kadikoy<br \/>\n*   <code>Organization Name<\/code>: MyCompany<br \/>\n*   <code>Organizational Unit Name<\/code>: IoT<br \/>\n*   <code>Common Name<\/code>: <strong>Buraya sunucunuzun IP adresini veya alan ad\u0131n\u0131 girin.<\/strong> (\u00f6rn: <code>192.168.1.100<\/code> veya <code>mqtt.example.com<\/code>)<br \/>\n*   <code>Email Address<\/code>: admin@mycompany.com<\/p>\n<p><code>Common Name<\/code> alan\u0131na Mosquitto sunucunuzun IP adresini veya alan ad\u0131n\u0131 (e\u011fer bir alan ad\u0131n\u0131z varsa) do\u011fru bir \u015fekilde girdi\u011finizden emin olun. \u0130stemciler ba\u011flan\u0131rken bu ad\u0131 do\u011frulayacakt\u0131r.<\/p>\n<h5>Mosquitto Sunucu Sertifikas\u0131 Olu\u015fturma<\/h5>\n<p>\u015eimdi Mosquitto sunucusu i\u00e7in bir \u00f6zel anahtar ve sertifika iste\u011fi (CSR) olu\u015ftural\u0131m. Ard\u0131ndan bu CSR&#8217;yi kendi CA&#8217;m\u0131zla imzalayarak sunucu sertifikas\u0131n\u0131 elde edece\u011fiz.<\/p>\n<pre><code class=\"language-bash\"># 1. Sunucu i\u00e7in \u00f6zel anahtar olu\u015fturma\nsudo openssl genrsa -out server.key 2048\n\n<h2>2. Sunucu sertifika iste\u011fi (CSR) olu\u015fturma<\/h2>\n<h2>Common Name olarak tekrar sunucunuzun IP adresini veya alan ad\u0131n\u0131 girin.<\/h2>\nsudo openssl req -new -out server.csr -key server.key<\/code><\/pre>\n<p><code>openssl req<\/code> komutunda yine bilgiler istenecek. <code>Common Name<\/code> alan\u0131na <strong>mutlaka<\/strong> CA sertifikas\u0131n\u0131 olu\u015ftururken kulland\u0131\u011f\u0131n\u0131z ayn\u0131 IP adresini veya alan ad\u0131n\u0131 girin.<\/p>\n<pre><code class=\"language-bash\"># 3. Sunucu sertifikas\u0131n\u0131 CA anahtar\u0131 ile imzalama\nsudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365<\/code><\/pre>\n<p>Bu komut, <code>server.csr<\/code> dosyas\u0131ndaki iste\u011fi <code>ca.crt<\/code> (CA sertifikas\u0131) ve <code>ca.key<\/code> (CA \u00f6zel anahtar\u0131) kullanarak imzalar ve <code>server.crt<\/code> ad\u0131nda bir sunucu sertifikas\u0131 olu\u015fturur. <code>server.crt<\/code> dosyas\u0131n\u0131n ge\u00e7erlilik s\u00fcresi 365 g\u00fcn olacakt\u0131r.<\/p>\n<h5>Dosya \u0130zinlerini Ayarlama<\/h5>\n<p>Sertifika ve anahtar dosyalar\u0131n\u0131n do\u011fru izinlere sahip olmas\u0131 \u00f6nemlidir. \u00d6zel anahtarlar\u0131n sadece Mosquitto taraf\u0131ndan okunabilir olmas\u0131 gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo chown mosquitto:mosquitto ca.crt server.crt server.key\nsudo chmod 400 server.key\nsudo chmod 444 ca.crt server.crt<\/code><\/pre>\n<h5>Mosquitto&#8217;yu TLS i\u00e7in Yap\u0131land\u0131rma<\/h5>\n<p>\u015eimdi Mosquitto yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenleyerek TLS&#8217;yi etkinle\u015ftirelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Varsay\u0131lan MQTT portu 1883&#8217;t\u00fcr. TLS i\u00e7in genellikle 8883 portu kullan\u0131l\u0131r. Hem 1883 (\u015fifresiz) hem de 8883 (\u015fifreli) portlar\u0131n\u0131 ayn\u0131 anda dinleyebilirsiniz. Ancak g\u00fcvenlik i\u00e7in 1883&#8217;\u00fc tamamen kapatmak veya sadece <code>localhost<\/code>&#8216;tan eri\u015fime izin vermek isteyebilirsiniz.<\/p>\n<p>A\u015fa\u011f\u0131daki sat\u0131rlar\u0131 yap\u0131land\u0131rma dosyan\u0131za ekleyin:<\/p>\n<pre><code class=\"language-\"># TLS etkinle\u015ftirilmi\u015f listener\nlistener 8883\n\n<h2>Sertifika dosyalar\u0131n\u0131n yolu<\/h2>\ncafile \/etc\/mosquitto\/certs\/ca.crt\ncertfile \/etc\/mosquitto\/certs\/server.crt\nkeyfile \/etc\/mosquitto\/certs\/server.key\n\n<h2>\u0130stemcinin de sertifika sunmas\u0131n\u0131 gerektirmeyin (tek y\u00f6nl\u00fc TLS)<\/h2>\n<h2>E\u011fer istemci sertifikas\u0131 do\u011frulamas\u0131 (mutual TLS) yapmak isterseniz bu sat\u0131r\u0131 'true' yap\u0131n.<\/h2>\nrequire_certificate false\n\n<h2>\u0130ste\u011fe ba\u011fl\u0131: G\u00fcvenli olmayan 1883 portunu kapatmak i\u00e7in<\/h2>\n<h2>listener 1883<\/h2>\n<h2>Bu sat\u0131r\u0131 yorum sat\u0131r\u0131 yap\u0131n veya silin.<\/h2>\n<h2>Veya sadece localhost'tan eri\u015fime izin verin:<\/h2>\n<h2>listener 1883 localhost<\/code><\/pre>\n<\/h2>\n<p>E\u011fer sadece TLS \u00fczerinden ba\u011flant\u0131ya izin vermek ve 1883 portunu tamamen kapatmak istiyorsan\u0131z, <code>listener 1883<\/code> sat\u0131r\u0131n\u0131 yorum sat\u0131r\u0131 yap\u0131n veya silin. E\u011fer hem g\u00fcvenli hem de g\u00fcvensiz ba\u011flant\u0131lara izin vermek istiyorsan\u0131z, <code>listener 1883<\/code> sat\u0131r\u0131n\u0131 b\u0131rak\u0131n. En g\u00fcvenli yakla\u015f\u0131m 1883&#8217;\u00fc kapatmak veya sadece <code>localhost<\/code>&#8216;a k\u0131s\u0131tlamakt\u0131r.<\/p>\n<p>Dosyay\u0131 kaydedip Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h5>TLS ile Test Etme<\/h5>\n<p>\u015eimdi <code>mosquitto_pub<\/code> ve <code>mosquitto_sub<\/code> istemcilerini kullanarak TLS ba\u011flant\u0131s\u0131n\u0131 test edelim. \u0130stemcilerin, sunucu sertifikas\u0131n\u0131 do\u011frulayabilmesi i\u00e7in CA sertifikas\u0131na ihtiyac\u0131 vard\u0131r.<\/p>\n<pre><code class=\"language-bash\"># Abone ol (CA sertifikas\u0131n\u0131 belirtin, TLS portunu ve kimlik bilgilerini kullan\u0131n)\nmosquitto_sub -h <sunucu_ip_adresi_veya_alan_adi> -p 8883 --cafile \/etc\/mosquitto\/certs\/ca.crt -t \"secure\/topic\" -u mqttuser -P <mqttuser_sifresi>\n\n<h2>Yay\u0131nla (CA sertifikas\u0131n\u0131 belirtin, TLS portunu ve kimlik bilgilerini kullan\u0131n)<\/h2>\nmosquitto_pub -h <sunucu_ip_adresi_veya_alan_adi> -p 8883 --cafile \/etc\/mosquitto\/certs\/ca.crt -t \"secure\/topic\" -m \"G\u00fcvenli Mesaj!\" -u mqttuser -P <mqttuser_sifresi><\/code><\/pre>\n<p><code><sunucu_ip_adresi_veya_alan_adi><\/code> yerine Mosquitto sunucunuzun IP adresini veya alan ad\u0131n\u0131 (CA ve sunucu sertifikalar\u0131n\u0131 olu\u015ftururken kulland\u0131\u011f\u0131n\u0131z <code>Common Name<\/code> ile ayn\u0131 olmal\u0131) yaz\u0131n. <code><mqttuser_sifresi><\/code> yerine <code>mqttuser<\/code>&#8216;\u0131n \u015fifresini girin.<\/p>\n<p>E\u011fer ba\u011flant\u0131 ba\u015far\u0131l\u0131 olursa ve mesajlar iletilirse, TLS \u015fifrelemesini ba\u015far\u0131yla yap\u0131land\u0131rd\u0131n\u0131z demektir.<\/p>\n<h5>\u0130stemci Sertifikas\u0131 Do\u011frulamas\u0131 (Mutual TLS &#8211; \u0130ste\u011fe Ba\u011fl\u0131)<\/h5>\n<p>Daha y\u00fcksek g\u00fcvenlik seviyesi i\u00e7in, Mosquitto&#8217;yu sadece bilinen istemci sertifikalar\u0131na sahip istemcilerin ba\u011flanmas\u0131na izin verecek \u015fekilde yap\u0131land\u0131rabilirsiniz (Mutual TLS). Bu durumda, her istemcinin kendi \u00f6zel anahtar\u0131 ve CA&#8217;n\u0131z taraf\u0131ndan imzalanm\u0131\u015f bir istemci sertifikas\u0131 olmas\u0131 gerekir.<\/p>\n<p>Bu ad\u0131m\u0131 uygulamak i\u00e7in:<br \/>\n1.  Her istemci i\u00e7in bir \u00f6zel anahtar ve sertifika iste\u011fi (CSR) olu\u015fturun.<br \/>\n2.  Bu CSR&#8217;leri CA anahtar\u0131n\u0131zla imzalayarak istemci sertifikalar\u0131n\u0131 olu\u015fturun.<br \/>\n3.  Mosquitto yap\u0131land\u0131rmas\u0131nda <code>require_certificate true<\/code> olarak ayarlay\u0131n.<br \/>\n4.  \u0130stemciler ba\u011flan\u0131rken kendi sertifika ve anahtar dosyalar\u0131n\u0131 <code>--cert<\/code> ve <code>--key<\/code> parametreleriyle belirtmelidir.<\/p>\n<p>Bu, &#8220;h\u0131zl\u0131 ba\u015flang\u0131\u00e7&#8221; kapsam\u0131n\u0131 biraz a\u015fsa da, geli\u015fmi\u015f g\u00fcvenlik ihtiyac\u0131 olan durumlar i\u00e7in \u00f6nemli bir se\u00e7enektir.<\/p>\n<h3>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h3>\n<p>Mosquitto sunucunuzun d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131 i\u00e7in g\u00fcvenlik duvar\u0131nda (firewall) gerekli portlar\u0131 a\u00e7man\u0131z gerekmektedir. Ubuntu&#8217;da UFW (Uncomplicated Firewall) yayg\u0131n olarak kullan\u0131l\u0131r.<\/p>\n<p>Varsay\u0131lan olarak Mosquitto, MQTT i\u00e7in 1883 portunu ve MQTT over TLS i\u00e7in 8883 portunu kullan\u0131r.<\/p>\n<pre><code class=\"language-bash\"># MQTT (g\u00fcvenli olmayan) portu i\u00e7in kural ekle (e\u011fer kullan\u0131yorsan\u0131z)\nsudo ufw allow 1883\/tcp\n\n<h2>MQTT over TLS (g\u00fcvenli) portu i\u00e7in kural ekle<\/h2>\nsudo ufw allow 8883\/tcp\n\n<h2>G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftir (e\u011fer etkin de\u011filse)<\/h2>\nsudo ufw enable\n\n<h2>G\u00fcvenlik duvar\u0131 durumunu kontrol et<\/h2>\nsudo ufw status<\/code><\/pre>\n<p><code>ufw status<\/code> \u00e7\u0131kt\u0131s\u0131nda 1883\/tcp ve 8883\/tcp portlar\u0131n\u0131n <code>ALLOW<\/code> olarak listelendi\u011fini g\u00f6rmelisiniz. E\u011fer 1883 portunu kapatmay\u0131 tercih ettiyseniz, sadece 8883 portunu a\u00e7man\u0131z yeterlidir.<\/p>\n<h3>Sorun Giderme ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Kurulum veya yap\u0131land\u0131rma s\u0131ras\u0131nda sorun ya\u015farsan\u0131z, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 kontrol edin:<\/p>\n<p>*   <strong>Mosquitto Loglar\u0131:<\/strong> Mosquitto&#8217;nun ne oldu\u011funu anlamak i\u00e7in loglar\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo journalctl -u mosquitto -f<\/code><\/pre>\n<p>    Bu komut, Mosquitto servisinin ger\u00e7ek zamanl\u0131 loglar\u0131n\u0131 g\u00f6sterir ve ba\u011flant\u0131 reddi, kimlik do\u011frulama hatalar\u0131 veya sertifika sorunlar\u0131 gibi mesajlar\u0131 i\u00e7erebilir.<br \/>\n*   <strong>Yap\u0131land\u0131rma Dosyas\u0131:<\/strong> <code>\/etc\/mosquitto\/mosquitto.conf<\/code> dosyas\u0131ndaki yaz\u0131m hatalar\u0131n\u0131 veya eksik sat\u0131rlar\u0131 kontrol edin. Herhangi bir de\u011fi\u015fiklik yapt\u0131ktan sonra servisi yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n*   <strong>Sertifika ve Anahtar Yollar\u0131:<\/strong> TLS yap\u0131land\u0131rmas\u0131nda <code>cafile<\/code>, <code>certfile<\/code>, <code>keyfile<\/code> yollar\u0131n\u0131n do\u011fru oldu\u011fundan ve dosya izinlerinin uygun oldu\u011fundan emin olun. \u00d6zel anahtarlar\u0131n sadece Mosquitto kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir olmas\u0131 gerekir (<code>chmod 400<\/code>).<br \/>\n*   <strong>Ortak Ad (Common Name):<\/strong> TLS sertifikalar\u0131n\u0131 olu\u015ftururken <code>Common Name<\/code> alan\u0131na sunucunun do\u011fru IP adresini veya alan ad\u0131n\u0131 girdi\u011finizden ve istemcilerin bu adla ba\u011flanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> UFW veya ba\u015fka bir g\u00fcvenlik duvar\u0131 kullan\u0131yorsan\u0131z, Mosquitto&#8217;nun kulland\u0131\u011f\u0131 portlar\u0131n (1883 ve\/veya 8883) a\u00e7\u0131k oldu\u011fundan emin olun.<br \/>\n*   <strong>Mosquitto Servisi:<\/strong> Mosquitto servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun: <code>systemctl status mosquitto<\/code>.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 k\u0131lavuzda, Mosquitto MQTT mesajla\u015fma arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00fczerine kurmay\u0131 ve temel g\u00fcvenlik ad\u0131mlar\u0131n\u0131 uygulamay\u0131 \u00f6\u011frendiniz. Anonim eri\u015fimi devre d\u0131\u015f\u0131 b\u0131rakarak, kullan\u0131c\u0131 ad\u0131 ve \u015fifre do\u011frulamas\u0131 ekleyerek, eri\u015fim kontrol listeleri (ACL&#8217;ler) ile yetkilendirme yaparak ve TLS\/SSL ile ileti\u015fimi \u015fifreleyerek Mosquitto kurulumunuzu \u00f6nemli \u00f6l\u00e7\u00fcde daha g\u00fcvenli hale getirdiniz.<\/p>\n<p>Bu ad\u0131mlar, Mosquitto&#8217;nuzu \u00fcretim ortamlar\u0131na daha uygun hale getirirken, IoT ve di\u011fer mesajla\u015fma tabanl\u0131 uygulamalar\u0131n\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturur. G\u00fcvenlik, hi\u00e7bir zaman tek seferlik bir i\u015flem de\u011fildir; d\u00fczenli olarak g\u00f6zden ge\u00e7irilmeli ve g\u00fcncel tehditlere kar\u015f\u0131 korunmal\u0131d\u0131r. Olu\u015fturdu\u011funuz self-signed sertifikalar\u0131 ger\u00e7ek bir CA&#8217;dan al\u0131nm\u0131\u015f sertifikalarla de\u011fi\u015ftirmeyi ve g\u00fc\u00e7l\u00fc \u015fifre politikalar\u0131 uygulamay\u0131 unutmay\u0131n. Art\u0131k g\u00fcvenli bir Mosquitto kurulumuna sahipsiniz ve IoT projelerinizi g\u00f6n\u00fcl rahatl\u0131\u011f\u0131yla geli\u015ftirmeye ba\u015flayabilirsiniz!<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]\nMQTT (Message Queuing Telemetry Transpo","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-39053","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7] - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]\" \/>\n<meta property=\"og:description\" content=\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7] MQTT (Message Queuing Telemetry Transpo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-13T09:40:50+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]\",\"datePublished\":\"2026-02-13T09:40:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\"},\"wordCount\":2593,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\",\"name\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7] - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-13T09:40:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7] - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/","og_locale":"tr_TR","og_type":"article","og_title":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]","og_description":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7] MQTT (Message Queuing Telemetry Transpo","og_url":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-13T09:40:50+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]","datePublished":"2026-02-13T09:40:50+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/"},"wordCount":2593,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/","url":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/","name":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7] - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-13T09:40:50+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisini-ubuntu-18-04-uzerine-kurulumu-ve-guvenligi-hizli-baslangic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131 Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011fi [H\u0131zl\u0131 Ba\u015flang\u0131\u00e7]"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39053"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39053\/revisions"}],"predecessor-version":[{"id":39054,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39053\/revisions\/39054"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}