{"id":34037,"date":"2025-11-10T08:40:55","date_gmt":"2025-11-10T05:40:55","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34037"},"modified":"2025-11-10T08:40:55","modified_gmt":"2025-11-10T05:40:55","slug":"mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/","title":{"rendered":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131<\/h2>\n<h3>Giri\u015f: Nesnelerin \u0130nterneti (IoT) ve MQTT<\/h3>\n<p>Nesnelerin \u0130nterneti (IoT) \u00e7a\u011f\u0131nda, cihazlar aras\u0131ndaki etkili ve g\u00fcvenilir ileti\u015fim hayati \u00f6nem ta\u015f\u0131maktad\u0131r. Sens\u00f6rlerden ak\u0131ll\u0131 ev aletlerine, end\u00fcstriyel makinelere kadar milyarlarca cihaz\u0131n birbirleriyle ve merkezi sistemlerle sorunsuz bir \u015fekilde veri al\u0131\u015fveri\u015fi yapmas\u0131 gerekmektedir. Bu ileti\u015fim ihtiyac\u0131n\u0131 kar\u015f\u0131lamak i\u00e7in geli\u015ftirilen protokollerden biri de MQTT (Message Queuing Telemetry Transport)&#8217;dir. MQTT, hafif, yay\u0131nc\u0131\/abone (publish\/subscribe) tabanl\u0131 bir mesajla\u015fma protokol\u00fcd\u00fcr ve \u00f6zellikle d\u00fc\u015f\u00fck bant geni\u015fli\u011fine sahip, y\u00fcksek gecikmeli veya g\u00fcvenilmez a\u011flarda \u00e7al\u0131\u015fan k\u0131s\u0131tl\u0131 cihazlar i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p>MQTT mimarisinin merkezinde bir &#8220;broker&#8221; bulunur. Yay\u0131nc\u0131lar (publishers) mesajlar\u0131 bu brokera g\u00f6nderir, aboneler (subscribers) ise ilgilendikleri konulara (topics) abone olarak brokerdan mesajlar\u0131 al\u0131r. Bu sayede yay\u0131nc\u0131lar ve aboneler birbirinden ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015fabilir, do\u011frudan birbirleriyle ileti\u015fim kurma ihtiyac\u0131 duymazlar.<\/p>\n<p>Mosquitto, a\u00e7\u0131k kaynakl\u0131, hafif ve pop\u00fcler bir MQTT broker\u0131d\u0131r. Eclipse Vakf\u0131 taraf\u0131ndan geli\u015ftirilen Mosquitto, MQTT protokol\u00fcn\u00fcn t\u00fcm ana \u00f6zelliklerini (QoS seviyeleri, kal\u0131c\u0131 oturumlar vb.) destekler ve hem k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli projelerde hem de b\u00fcy\u00fck, end\u00fcstriyel uygulamalarda yayg\u0131n olarak kullan\u0131l\u0131r. D\u00fc\u015f\u00fck kaynak t\u00fcketimi, y\u00fcksek performans\u0131 ve geni\u015f g\u00fcvenlik se\u00e7enekleri sayesinde IoT ekosistemlerinde tercih edilen \u00e7\u00f6z\u00fcmlerden biridir.<\/p>\n<p>Bu makalede, Mosquitto MQTT broker\u0131n\u0131 Ubuntu 18.04 sunucusu \u00fczerine nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve en \u00f6nemlisi, sisteminizi d\u0131\u015f tehditlere kar\u015f\u0131 korumak i\u00e7in kapsaml\u0131 g\u00fcvenlik \u00f6nlemlerini nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Ubuntu 18.04, sunucu ortamlar\u0131nda yayg\u0131n olarak kullan\u0131lan kararl\u0131 ve g\u00fcvenilir bir i\u015fletim sistemi oldu\u011fundan, Mosquitto&#8217;nun bu platformda g\u00fcvenli bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131, IoT projelerinizin temelini sa\u011flam bir \u015fekilde atman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Mosquitto kurulumuna ba\u015flamadan \u00f6nce, a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n yerine getirildi\u011finden emin olun:<\/p>\n<p>*   <strong>Ubuntu 18.04 Sunucusu:<\/strong> \u0130nternet eri\u015fimi olan, temiz bir Ubuntu 18.04 sunucusu (fiziksel sunucu, sanal makine veya bulut VPS).<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Kurulum ve yap\u0131land\u0131rma i\u015flemleri i\u00e7in <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 hesab\u0131.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Komut sat\u0131r\u0131 (terminal) kullan\u0131m\u0131 hakk\u0131nda temel bilgi.<\/p>\n<h3>Mosquitto Kurulumu<\/h3>\n<p>Mosquitto&#8217;yu Ubuntu 18.04 \u00fczerine kurmak olduk\u00e7a basit bir i\u015flemdir. En g\u00fcncel ve kararl\u0131 s\u00fcr\u00fcm\u00fc elde etmek i\u00e7in Mosquitto&#8217;nun kendi PPA (Personal Package Archive) deposunu kullanman\u0131z\u0131 \u00f6neririz.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sisteminizin paket listesini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nler ve en son g\u00fcvenlik yamalar\u0131na sahip olman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Mosquitto PPA Deposu Ekleme<\/h4>\n<p>Ubuntu&#8217;nun varsay\u0131lan depolar\u0131 genellikle Mosquitto&#8217;nun daha eski bir s\u00fcr\u00fcm\u00fcn\u00fc i\u00e7erir. En yeni \u00f6zellikleri ve g\u00fcvenlik d\u00fczeltmelerini i\u00e7eren en g\u00fcncel kararl\u0131 s\u00fcr\u00fcm\u00fc almak i\u00e7in Mosquitto geli\u015ftiricilerinin PPA deposunu ekleyece\u011fiz.<\/p>\n<p>\u00d6ncelikle, PPA depolar\u0131n\u0131 y\u00f6netmek i\u00e7in gerekli olan <code>software-properties-common<\/code> paketini kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y software-properties-common<\/code><\/pre>\n<p>\u015eimdi Mosquitto PPA deposunu ekleyin ve paket listenizi tekrar g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo add-apt-repository ppa:mosquitto-dev\/mosquitto-ppa\nsudo apt update<\/code><\/pre>\n<h4>Mosquitto ve \u0130stemcilerini Kurma<\/h4>\n<p>Depo eklendikten ve g\u00fcncellendikten sonra, Mosquitto broker\u0131n\u0131 ve Mosquitto istemci ara\u00e7lar\u0131n\u0131 (test ama\u00e7l\u0131 kullanaca\u011f\u0131m\u0131z <code>mosquitto_pub<\/code> ve <code>mosquitto_sub<\/code>) kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y mosquitto mosquitto-clients<\/code><\/pre>\n<h4>Mosquitto Servis Durumunu Kontrol Etme<\/h4>\n<p>Kurulum tamamland\u0131\u011f\u0131nda, Mosquitto servisi otomatik olarak ba\u015flat\u0131lmal\u0131d\u0131r. Servisin durumunu kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status mosquitto<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz. E\u011fer servis \u00e7al\u0131\u015fm\u0131yorsa, <code>sudo systemctl start mosquitto<\/code> komutuyla ba\u015flatabilir ve <code>sudo systemctl enable mosquitto<\/code> komutuyla sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Ayarlar\u0131 (UFW)<\/h4>\n<p>Sunucunuzun g\u00fcvenli\u011fi i\u00e7in bir g\u00fcvenlik duvar\u0131 kullanmak esast\u0131r. Ubuntu&#8217;da yayg\u0131n olarak kullan\u0131lan <code>UFW<\/code> (Uncomplicated Firewall) ile Mosquitto&#8217;nun kulland\u0131\u011f\u0131 portlara izin vermeniz gerekmektedir.<\/p>\n<p>*   <strong>1883\/tcp:<\/strong> Standart, \u015fifrelenmemi\u015f MQTT portu.<br \/>\n*   <strong>8883\/tcp:<\/strong> SSL\/TLS \u00fczerinden g\u00fcvenli MQTT portu.<\/p>\n<p>E\u011fer UFW etkin de\u011filse, \u00f6ncelikle etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw enable<\/code><\/pre>\n<p><em>Not: Bu komut SSH ba\u011flant\u0131n\u0131z\u0131 kesebilir. E\u011fer uzaktan ba\u011flan\u0131yorsan\u0131z, \u00f6nce SSH portuna (varsay\u0131lan 22) izin vermeniz gerekebilir: <code>sudo ufw allow ssh<\/code> veya <code>sudo ufw allow 22\/tcp<\/code>.<\/em><\/p>\n<p>\u015eimdi Mosquitto portlar\u0131na izin verin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 1883\/tcp\nsudo ufw allow 8883\/tcp<\/code><\/pre>\n<p>G\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131z\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<h3>Temel Mosquitto Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Mosquitto&#8217;nun ana yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/mosquitto\/mosquitto.conf<\/code> konumunda bulunur. G\u00fcvenlik ayarlar\u0131n\u0131 yapmadan \u00f6nce, bu dosyan\u0131n bir yede\u011fini alman\u0131z her zaman iyi bir fikirdir.<\/p>\n<pre><code class=\"language-bash\">sudo cp \/etc\/mosquitto\/mosquitto.conf \/etc\/mosquitto\/mosquitto.conf.bak<\/code><\/pre>\n<p>Varsay\u0131lan <code>mosquitto.conf<\/code> dosyas\u0131 genellikle bo\u015f veya yorum sat\u0131rlar\u0131yla doludur. Mosquitto, yap\u0131land\u0131rma dosyas\u0131nda belirtilmeyen t\u00fcm ayarlar i\u00e7in dahili varsay\u0131lan de\u011ferleri kullan\u0131r. Temel olarak, Mosquitto&#8217;nun varsay\u0131lan olarak anonim ba\u011flant\u0131lara izin verdi\u011fini bilmek \u00f6nemlidir. Bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck bir risktir ve ilk yapmam\u0131z gereken de\u011fi\u015fikliklerden biri olacakt\u0131r.<\/p>\n<p>Bir metin d\u00fczenleyici (\u00f6rne\u011fin <code>nano<\/code>) ile yap\u0131land\u0131rma dosyas\u0131n\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyerek anonim ba\u011flant\u0131lar\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n:<\/p>\n<pre><code class=\"language-\">allow_anonymous false<\/code><\/pre>\n<p>Bu ayar, Mosquitto&#8217;ya ba\u011flanmaya \u00e7al\u0131\u015fan her istemcinin bir kullan\u0131c\u0131 ad\u0131 ve \u015fifre sa\u011flamas\u0131n\u0131 zorunlu k\u0131lar. Bu, temel bir g\u00fcvenlik katman\u0131 olu\u015fturur.<\/p>\n<p>De\u011fi\u015fiklikleri kaydedin (nano i\u00e7in <code>Ctrl+X<\/code>, <code>Y<\/code>, <code>Enter<\/code>) ve Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<h3>Mosquitto G\u00fcvenli\u011finin Sa\u011flanmas\u0131<\/h3>\n<p>Mosquitto&#8217;nun temel kurulumu tamamland\u0131ktan sonra, en kritik a\u015fama olan g\u00fcvenlik yap\u0131land\u0131rmas\u0131na ge\u00e7ebiliriz. Bir IoT broker\u0131, genellikle hassas verileri i\u015fledi\u011fi ve bir\u00e7ok farkl\u0131 cihazla ileti\u015fim kurdu\u011fu i\u00e7in d\u0131\u015f tehditlere kar\u015f\u0131 \u00e7ok iyi korunmal\u0131d\u0131r.<\/p>\n<h4>1. Kullan\u0131c\u0131 Ad\u0131 ve \u015eifre ile Kimlik Do\u011frulama<\/h4>\n<p>Daha \u00f6nce <code>allow_anonymous false<\/code> ayar\u0131n\u0131 yaparak anonim ba\u011flant\u0131lar\u0131 engelledik. \u015eimdi, yetkili kullan\u0131c\u0131lar i\u00e7in kullan\u0131c\u0131 ad\u0131 ve \u015fifre tan\u0131mlamam\u0131z gerekiyor. Mosquitto, \u015fifreleri g\u00fcvenli bir \u015fekilde saklamak i\u00e7in \u00f6zel bir ara\u00e7 olan <code>mosquitto_passwd<\/code>&#8216;i kullan\u0131r.<\/p>\n<p>\u0130lk kullan\u0131c\u0131y\u0131 olu\u015ftururken <code>-c<\/code> (create) bayra\u011f\u0131n\u0131 kullan\u0131n. Bu, yeni bir \u015fifre dosyas\u0131 olu\u015fturur.<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd <kullan\u0131c\u0131_ad\u0131><\/code><\/pre>\n<p>\u00d6rnek:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd -c \/etc\/mosquitto\/passwd admin_user<\/code><\/pre>\n<p>Sizden bu kullan\u0131c\u0131 i\u00e7in bir \u015fifre girmeniz ve onaylaman\u0131z istenecektir.<\/p>\n<p>Daha sonraki kullan\u0131c\u0131lar\u0131 eklerken <code>-c<\/code> bayra\u011f\u0131n\u0131 kullanmay\u0131n, aksi takdirde mevcut dosyan\u0131n \u00fczerine yaz\u0131l\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd \/etc\/mosquitto\/passwd <ba\u015fka_kullan\u0131c\u0131_ad\u0131><\/code><\/pre>\n<p>\u00d6rnek:<\/p>\n<pre><code class=\"language-bash\">sudo mosquitto_passwd \/etc\/mosquitto\/passwd sensor_user<\/code><\/pre>\n<p>\u015eifre dosyas\u0131n\u0131n izinlerini Mosquitto servisi i\u00e7in do\u011fru \u015fekilde ayarlamak \u00f6nemlidir:<\/p>\n<pre><code class=\"language-bash\">sudo chown mosquitto:mosquitto \/etc\/mosquitto\/passwd\nsudo chmod 600 \/etc\/mosquitto\/passwd<\/code><\/pre>\n<p>Bu, sadece <code>mosquitto<\/code> kullan\u0131c\u0131s\u0131n\u0131n dosyay\u0131 okuyabilmesini sa\u011flar.<\/p>\n<p>\u015eimdi Mosquitto yap\u0131land\u0131rma dosyas\u0131n\u0131 (<code>\/etc\/mosquitto\/mosquitto.conf<\/code>) d\u00fczenleyerek bu \u015fifre dosyas\u0131n\u0131 kullanmas\u0131n\u0131 s\u00f6yleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Dosyaya a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin (veya mevcutsa g\u00fcncelleyin):<\/p>\n<pre><code class=\"language-\">password_file \/etc\/mosquitto\/passwd\nallow_anonymous false<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydedin ve Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<p><strong>Test:<\/strong><br \/>\n\u015eimdi <code>mosquitto_pub<\/code> veya <code>mosquitto_sub<\/code> kullanarak kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile ba\u011flant\u0131 kurmay\u0131 deneyin:<\/p>\n<pre><code class=\"language-bash\"># Abone olma\nmosquitto_sub -h localhost -t \"test\/topic\" -u admin_user -P <admin_\u015fifresi>\n\n<h2>Yay\u0131n yapma<\/h2>\nmosquitto_pub -h localhost -t \"test\/topic\" -m \"Merhaba, g\u00fcvenli MQTT!\" -u admin_user -P <admin_\u015fifresi><\/code><\/pre>\n<p>E\u011fer kullan\u0131c\u0131 ad\u0131 ve \u015fifre yanl\u0131\u015fsa veya belirtilmezse, ba\u011flant\u0131 ba\u015far\u0131s\u0131z olacakt\u0131r.<\/p>\n<h4>2. ACL (Eri\u015fim Kontrol Listeleri) Kullan\u0131m\u0131<\/h4>\n<p>Kullan\u0131c\u0131 ad\u0131 ve \u015fifre kimlik do\u011frulamas\u0131, Mosquitto&#8217;ya kimlerin ba\u011flanabilece\u011fini kontrol eder, ancak hangi kullan\u0131c\u0131lar\u0131n hangi konulara (topics) yay\u0131n yapabilece\u011fini veya abone olabilece\u011fini kontrol etmez. Bu noktada ACL&#8217;ler (Access Control Lists &#8211; Eri\u015fim Kontrol Listeleri) devreye girer. ACL&#8217;ler, belirli kullan\u0131c\u0131lara belirli konular \u00fczerinde okuma, yazma veya her ikisini birden yapma yetkisi vermenizi sa\u011flar.<\/p>\n<p>\u00d6ncelikle, ACL dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/aclfile.conf<\/code><\/pre>\n<p>Bu dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki gibi kurallar ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-\"># Varsay\u0131lan olarak t\u00fcm kullan\u0131c\u0131lara eri\u015fimi k\u0131s\u0131tla\n<h2>Bu, herhangi bir \"user\" kural\u0131yla e\u015fle\u015fmeyen t\u00fcm kullan\u0131c\u0131lar\u0131n varsay\u0131lan olarak eri\u015fimini engeller.<\/h2>\n<h2>E\u011fer sadece belirli kullan\u0131c\u0131lara belirli yetkiler vermek istiyorsan\u0131z bu sat\u0131r\u0131 ekleyin.<\/h2>\n<h2>Veya daha spesifik kurallar tan\u0131mlayabilirsiniz.<\/h2>\n<h2>\u00d6rne\u011fin, t\u00fcm kullan\u0131c\u0131lara her \u015feye eri\u015fim vermek i\u00e7in:<\/h2>\n<h2>topic readwrite #<\/h2>\n\n<h2>'admin_user' kullan\u0131c\u0131s\u0131na t\u00fcm konular \u00fczerinde okuma ve yazma yetkisi ver<\/h2>\nuser admin_user\ntopic readwrite #\n\n<h2>'sensor_user' kullan\u0131c\u0131s\u0131na sadece 'sensor\/data' konusuna yazma (veri g\u00f6nderme) yetkisi ver<\/h2>\nuser sensor_user\ntopic write sensor\/data\n\n<h2>'monitor_user' kullan\u0131c\u0131s\u0131na 'sensor\/data' ve 'alerts\/#' konular\u0131na okuma yetkisi ver<\/h2>\nuser monitor_user\ntopic read sensor\/data\ntopic read alerts\/#\n\n<h2>$SYS konular\u0131na eri\u015fimi k\u0131s\u0131tla (Mosquitto'nun dahili istatistikleri)<\/h2>\n<h2>Genellikle sadece admin kullan\u0131c\u0131s\u0131n\u0131n eri\u015fmesi \u00f6nerilir.<\/h2>\nuser admin_user\ntopic read $SYS\/#<\/code><\/pre>\n<p>ACL dosyas\u0131n\u0131 kaydedin ve izinlerini ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown mosquitto:mosquitto \/etc\/mosquitto\/aclfile.conf\nsudo chmod 600 \/etc\/mosquitto\/aclfile.conf<\/code><\/pre>\n<p>\u015eimdi Mosquitto yap\u0131land\u0131rma dosyas\u0131n\u0131 (<code>\/etc\/mosquitto\/mosquitto.conf<\/code>) d\u00fczenleyerek bu ACL dosyas\u0131n\u0131 kullanmas\u0131n\u0131 s\u00f6yleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Dosyaya a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\">password_file \/etc\/mosquitto\/passwd\nallow_anonymous false\nacl_file \/etc\/mosquitto\/aclfile.conf<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydedin ve Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<p><strong>Test:<\/strong><br \/>\nACL kurallar\u0131n\u0131 test etmek i\u00e7in farkl\u0131 kullan\u0131c\u0131larla farkl\u0131 konulara yay\u0131n yapmaya veya abone olmaya \u00e7al\u0131\u015f\u0131n. \u00d6rne\u011fin, <code>sensor_user<\/code> ile <code>sensor\/data<\/code> d\u0131\u015f\u0131ndaki bir konuya yay\u0131n yapmaya \u00e7al\u0131\u015f\u0131rsan\u0131z eri\u015fim reddedilmelidir.<\/p>\n<pre><code class=\"language-bash\"># sensor_user ile izin verilen konuya yay\u0131n\nmosquitto_pub -h localhost -t \"sensor\/data\" -m \"Temp: 25C\" -u sensor_user -P <sensor_\u015fifresi>\n\n<h2>sensor_user ile izin verilmeyen konuya yay\u0131n (ba\u015far\u0131s\u0131z olmal\u0131)<\/h2>\nmosquitto_pub -h localhost -t \"other\/data\" -m \"Unauthorized\" -u sensor_user -P <sensor_\u015fifresi>\n\n<h2>monitor_user ile izin verilen konuya abone olma<\/h2>\nmosquitto_sub -h localhost -t \"alerts\/#\" -u monitor_user -P <monitor_\u015fifresi><\/code><\/pre>\n<h4>3. SSL\/TLS ile G\u00fcvenli \u0130leti\u015fim<\/h4>\n<p>Kullan\u0131c\u0131 ad\u0131\/\u015fifre ve ACL&#8217;ler, kimlik do\u011frulama ve yetkilendirme sa\u011flar, ancak a\u011f \u00fczerinden g\u00f6nderilen mesajlar\u0131 \u015fifrelemezler. Bu, \u00f6zellikle hassas verilerle u\u011fra\u015f\u0131rken veya g\u00fcvensiz a\u011flarda (\u00f6rne\u011fin internet) ileti\u015fim kurarken b\u00fcy\u00fck bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131d\u0131r. SSL\/TLS (Secure Sockets Layer\/Transport Layer Security) kullanarak Mosquitto ile istemciler aras\u0131ndaki t\u00fcm ileti\u015fimi \u015fifreleyebilirsiniz.<\/p>\n<p>SSL\/TLS uygulamak i\u00e7in sertifikalara ihtiyac\u0131m\u0131z var. \u00dcretim ortamlar\u0131nda Let&#8217;s Encrypt gibi g\u00fcvenilir bir sertifika sa\u011flay\u0131c\u0131s\u0131ndan sertifika alman\u0131z \u00f6nerilir. Ancak bu makalede, test ama\u00e7l\u0131 olarak kendi imzal\u0131 (self-signed) sertifikalar\u0131m\u0131z\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<p>\u00d6ncelikle sertifikalar\u0131 saklamak i\u00e7in bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/etc\/mosquitto\/certs\nsudo chown mosquitto:mosquitto \/etc\/mosquitto\/certs<\/code><\/pre>\n<p><strong>K\u00f6k Sertifika Yetkilisi (CA) Olu\u015fturma:<\/strong><br \/>\nKendi sertifikalar\u0131m\u0131z\u0131 imzalamak i\u00e7in bir K\u00f6k Sertifika Yetkilisi (CA) olu\u015fturaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">cd \/etc\/mosquitto\/certs\nsudo openssl req -new -x509 -days 3650 -extensions v3_ca -keyout ca.key -out ca.crt<\/code><\/pre>\n<p>Bu komut sizden baz\u0131 bilgiler isteyecektir (\u00fclke, \u015fehir, kurulu\u015f ad\u0131 vb.). &#8220;Common Name&#8221; (Ortak Ad) alan\u0131na herhangi bir \u015fey girebilirsiniz, \u00f6rne\u011fin &#8220;My Mosquitto CA&#8221;. <code>days 3650<\/code> sertifikan\u0131n 10 y\u0131l ge\u00e7erli olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p><strong>Sunucu Anahtar\u0131 ve Sertifika \u0130ste\u011fi Olu\u015fturma:<\/strong><br \/>\n\u015eimdi Mosquitto broker\u0131 i\u00e7in bir \u00f6zel anahtar (private key) ve bir sertifika imzalama iste\u011fi (CSR) olu\u015fturaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo openssl genrsa -out server.key 2048\nsudo openssl req -new -out server.csr -key server.key<\/code><\/pre>\n<p>Burada Common Name (Ortak Ad) olarak Mosquitto sunucunuzun IP adresini veya alan ad\u0131n\u0131 (\u00f6rne\u011fin <code>mqtt.example.com<\/code> veya <code>192.168.1.100<\/code>) girmek \u00e7ok \u00f6nemlidir. Aksi takdirde istemciler sertifikay\u0131 do\u011frularken hata alabilir.<\/p>\n<p><strong>Sunucu Sertifikas\u0131n\u0131 CA ile \u0130mzalama:<\/strong><br \/>\nOlu\u015fturdu\u011fumuz CSR&#8217;yi, az \u00f6nce olu\u015fturdu\u011fumuz CA ile imzalayarak sunucu sertifikas\u0131n\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650<\/code><\/pre>\n<p><strong>\u0130zinleri Ayarlama:<\/strong><br \/>\nSertifika dosyalar\u0131n\u0131n do\u011fru izinlere sahip olmas\u0131 kritik \u00f6neme sahiptir. \u00d6zel anahtar dosyalar\u0131 (key files) sadece Mosquitto kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir olmal\u0131d\u0131r.<\/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<p><strong>Mosquitto Yap\u0131land\u0131rmas\u0131 (SSL\/TLS):<\/strong><br \/>\n\u015eimdi Mosquitto&#8217;ya bu sertifikalar\u0131 kullanmas\u0131n\u0131 s\u00f6yleyece\u011fiz. <code>mosquitto.conf<\/code> dosyas\u0131n\u0131 tekrar d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<p>Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\"># SSL\/TLS i\u00e7in dinleyici (listener)\nlistener 8883\nprotocol mqtt\ncafile \/etc\/mosquitto\/certs\/ca.crt\ncertfile \/etc\/mosquitto\/certs\/server.crt\nkeyfile \/etc\/mosquitto\/certs\/server.key\n<h2>require_certificate false # \u0130stemci sertifikas\u0131 kimlik do\u011frulamas\u0131 i\u00e7in (\u015fimdilik false b\u0131rakal\u0131m)<\/code><\/pre>\n<\/h2>\n<p><code>listener 8883<\/code> sat\u0131r\u0131, Mosquitto&#8217;nun 8883 numaral\u0131 portta SSL\/TLS \u00fczerinden ba\u011flant\u0131lar\u0131 dinlemesini sa\u011flar. <code>protocol mqtt<\/code> ise bu dinleyicinin MQTT protokol\u00fcn\u00fc kullanaca\u011f\u0131n\u0131 belirtir.<\/p>\n<p>De\u011fi\u015fiklikleri kaydedin ve Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<p><strong>Test:<\/strong><br \/>\n\u015eimdi Mosquitto&#8217;ya SSL\/TLS \u00fczerinden ba\u011flanmay\u0131 deneyin. \u0130stemcilerin CA sertifikas\u0131n\u0131 bilmesi gerekecektir. CA sertifikas\u0131n\u0131 (<code>ca.crt<\/code>) istemcinin bulundu\u011fu makineye kopyalaman\u0131z gerekecektir.<\/p>\n<pre><code class=\"language-bash\"># Abone olma (SSL\/TLS ile)\nmosquitto_sub -h <sunucu_ip_adresi> -p 8883 --tls-version tlsv1.2 --cafile \/path\/to\/client\/ca.crt -t \"secure\/topic\" -u admin_user -P <admin_\u015fifresi>\n\n<h2>Yay\u0131n yapma (SSL\/TLS ile)<\/h2>\nmosquitto_pub -h <sunucu_ip_adresi> -p 8883 --tls-version tlsv1.2 --cafile \/path\/to\/client\/ca.crt -t \"secure\/topic\" -m \"G\u00fcvenli mesaj!\" -u admin_user -P <admin_\u015fifresi><\/code><\/pre>\n<p><code>--cafile<\/code> parametresi, istemcinin sunucunun sertifikas\u0131n\u0131 do\u011frulamak i\u00e7in kullanaca\u011f\u0131 CA sertifikas\u0131n\u0131n yolunu belirtir. E\u011fer sunucu IP adresi veya alan ad\u0131 sertifikadaki Common Name ile e\u015fle\u015fmezse, ba\u011flant\u0131 ba\u015far\u0131s\u0131z olabilir.<\/p>\n<h4>4. \u0130stemci Sertifikas\u0131 Kimlik Do\u011frulamas\u0131 (Opsiyonel ama Y\u00fcksek G\u00fcvenlik)<\/h4>\n<p>SSL\/TLS ile sunucu, istemciye kimli\u011fini kan\u0131tlar. \u0130stemci sertifikas\u0131 kimlik do\u011frulamas\u0131 (mutual TLS veya two-way TLS), istemcinin de sunucuya kimli\u011fini kan\u0131tlamas\u0131n\u0131 sa\u011flar. Bu, en y\u00fcksek g\u00fcvenlik seviyelerinden biridir ve sadece belirli sertifikalara sahip istemcilerin ba\u011flanmas\u0131na izin verir.<\/p>\n<p>Bu ad\u0131m\u0131 uygulamak i\u00e7in, her istemci i\u00e7in ayr\u0131 bir anahtar ve sertifika olu\u015fturman\u0131z ve bunlar\u0131 CA&#8217;n\u0131zla imzalaman\u0131z gerekir.<\/p>\n<p><strong>\u0130stemci Anahtar\u0131 ve Sertifika \u0130ste\u011fi Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-bash\">cd \/etc\/mosquitto\/certs\nsudo openssl genrsa -out client.key 2048\nsudo openssl req -new -out client.csr -key client.key<\/code><\/pre>\n<p>Bu sefer Common Name olarak istemcinin ad\u0131n\u0131 girebilirsiniz, \u00f6rne\u011fin &#8220;my_sensor_client&#8221;.<\/p>\n<p><strong>\u0130stemci Sertifikas\u0131n\u0131 CA ile \u0130mzalama:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650<\/code><\/pre>\n<p><strong>\u0130zinleri Ayarlama:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo chown mosquitto:mosquitto client.key client.crt\nsudo chmod 400 client.key\nsudo chmod 444 client.crt<\/code><\/pre>\n<p><strong>Mosquitto Yap\u0131land\u0131rmas\u0131 (\u0130stemci Sertifikas\u0131 Do\u011frulamas\u0131):<\/strong><br \/>\n<code>mosquitto.conf<\/code> dosyas\u0131nda <code>listener 8883<\/code> blo\u011funun alt\u0131na <code>require_certificate true<\/code> sat\u0131r\u0131n\u0131 ekleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<pre><code class=\"language-\">listener 8883\nprotocol mqtt\ncafile \/etc\/mosquitto\/certs\/ca.crt\ncertfile \/etc\/mosquitto\/certs\/server.crt\nkeyfile \/etc\/mosquitto\/certs\/server.key\nrequire_certificate true # Bu sat\u0131r\u0131 ekleyin<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydedin ve Mosquitto servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart mosquitto<\/code><\/pre>\n<p><strong>Test:<\/strong><br \/>\n\u015eimdi istemcinin kendi sertifikas\u0131 ve anahtar\u0131 olmadan ba\u011flanmaya \u00e7al\u0131\u015f\u0131rsan\u0131z ba\u011flant\u0131 reddedilecektir. Ba\u011flant\u0131 kurmak i\u00e7in istemcinin CA sertifikas\u0131na ek olarak kendi istemci sertifikas\u0131na ve \u00f6zel anahtar\u0131na ihtiyac\u0131 olacakt\u0131r. Bu dosyalar\u0131 (<code>ca.crt<\/code>, <code>client.crt<\/code>, <code>client.key<\/code>) istemcinin bulundu\u011fu makineye kopyalaman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\"># Abone olma (\u0130stemci Sertifikas\u0131 ile)\nmosquitto_sub -h <sunucu_ip_adresi> -p 8883 --tls-version tlsv1.2 --cafile \/path\/to\/client\/ca.crt --cert \/path\/to\/client\/client.crt --key \/path\/to\/client\/client.key -t \"secure\/topic\" -u admin_user -P <admin_\u015fifresi><\/code><\/pre>\n<p>Bu, Mosquitto g\u00fcvenlik seviyesini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r, ancak her istemci i\u00e7in sertifika y\u00f6netimi gerektirdi\u011finden daha karma\u015f\u0131k olabilir.<\/p>\n<h4>5. G\u00fcvenli Dinleme Portlar\u0131<\/h4>\n<p>Varsay\u0131lan olarak Mosquitto, 1883 (\u015fifrelenmemi\u015f) ve 8883 (SSL\/TLS \u015fifreli) portlar\u0131n\u0131 dinler. E\u011fer t\u00fcm istemcilerinizin SSL\/TLS kullanabilme yetene\u011fi varsa, \u015fifrelenmemi\u015f 1883 portunu tamamen kapatmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Bu, broker&#8217;\u0131n g\u00fcvenli\u011fini art\u0131r\u0131r.<\/p>\n<p>E\u011fer 1883 portunu kapatmak istemiyorsan\u0131z ancak yine de g\u00fcvenli\u011fini sa\u011flamak istiyorsan\u0131z, bu dinleyici i\u00e7in de ayr\u0131 bir kimlik do\u011frulama ve yetkilendirme yap\u0131land\u0131rmas\u0131 yapabilirsiniz.<\/p>\n<p><code>mosquitto.conf<\/code> dosyas\u0131nda 1883 dinleyicisi i\u00e7in a\u015fa\u011f\u0131daki gibi ayr\u0131 bir blok tan\u0131mlayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/mosquitto\/mosquitto.conf<\/code><\/pre>\n<pre><code class=\"language-\"># \u015eifrelenmemi\u015f dinleyici (iste\u011fe ba\u011fl\u0131)\nlistener 1883\nprotocol mqtt\nallow_anonymous false\npassword_file \/etc\/mosquitto\/passwd\nacl_file \/etc\/mosquitto\/aclfile.conf\n\n<h2>SSL\/TLS dinleyici<\/h2>\nlistener 8883\nprotocol mqtt\ncafile \/etc\/mosquitto\/certs\/ca.crt\ncertfile \/etc\/mosquitto\/certs\/server.crt\nkeyfile \/etc\/mosquitto\/certs\/server.key\nrequire_certificate false # veya true<\/code><\/pre>\n<p>E\u011fer 1883 portunu tamamen kapatmak isterseniz, <code>listener 1883<\/code> ile ba\u015flayan blo\u011fu tamamen silebilir veya yorum sat\u0131r\u0131 haline getirebilirsiniz. Unutmay\u0131n, bu durumda UFW&#8217;den de 1883 portuna verilen izni kald\u0131rman\u0131z gerekir: <code>sudo ufw delete allow 1883\/tcp<\/code>.<\/p>\n<h4>6. Di\u011fer G\u00fcvenlik \u00d6nlemleri<\/h4>\n<p>Yukar\u0131daki temel \u00f6nlemlerin yan\u0131 s\u0131ra, Mosquitto kurulumunuzun genel g\u00fcvenli\u011fini art\u0131rmak i\u00e7in ek ad\u0131mlar atabilirsiniz:<\/p>\n<p>*   <strong><code>bind_address<\/code> Kullan\u0131m\u0131:<\/strong> Mosquitto&#8217;nun sadece belirli bir a\u011f aray\u00fcz\u00fcndeki ba\u011flant\u0131lar\u0131 dinlemesini sa\u011flayabilirsiniz. \u00d6rne\u011fin, sadece yerel a\u011fdan veya belirli bir IP adresinden gelen ba\u011flant\u0131lara izin vermek i\u00e7in:<\/p>\n<pre><code class=\"language-\">bind_address 192.168.1.100<\/code><\/pre>\n<p>    Bu, broker&#8217;\u0131n d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131n\u0131 engellerken, dahili a\u011f\u0131n\u0131zdaki cihazlar\u0131n ileti\u015fim kurmas\u0131na izin verir. E\u011fer her yerden eri\u015filebilir olmas\u0131n\u0131 istiyorsan\u0131z, <code>bind_address 0.0.0.0<\/code> kullanabilirsiniz, ancak bu durumda g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131z daha da kritik hale gelir.<\/p>\n<p>*   <strong>G\u00fcncel Tutma:<\/strong> \u0130\u015fletim sisteminizi ve Mosquitto paketini d\u00fczenli olarak g\u00fcncelleyin. G\u00fcvenlik a\u00e7\u0131klar\u0131 s\u00fcrekli olarak ke\u015ffedilir ve yamalar yay\u0131nlan\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo apt update && sudo apt upgrade -y<\/code><\/pre>\n<p>*   <strong>Loglama:<\/strong> Mosquitto&#8217;nun olaylar\u0131 ve hatalar\u0131 kaydetmesini sa\u011flay\u0131n. Bu, g\u00fcvenlik olaylar\u0131n\u0131 izlemenize ve sorunlar\u0131 gidermenize yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">log_dest file \/var\/log\/mosquitto\/mosquitto.log\n    log_type error\n    log_type warning\n    log_type notice\n    log_type information\n    # log_type debug # Daha detayl\u0131 hata ay\u0131klama i\u00e7in<\/code><\/pre>\n<p>    Log dosyas\u0131n\u0131n var oldu\u011fundan ve Mosquitto kullan\u0131c\u0131s\u0131n\u0131n yazma izinlerine sahip oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/log\/mosquitto\n    sudo touch \/var\/log\/mosquitto\/mosquitto.log\n    sudo chown mosquitto:mosquitto \/var\/log\/mosquitto\/mosquitto.log<\/code><\/pre>\n<p>    Loglar\u0131 d\u00fczenli olarak g\u00f6zden ge\u00e7irin veya bir log y\u00f6netim sistemine (ELK Stack, Graylog vb.) entegre edin.<\/p>\n<p>*   <strong>S\u0131n\u0131rl\u0131 Kullan\u0131c\u0131 ile \u00c7al\u0131\u015fma:<\/strong> Mosquitto varsay\u0131lan olarak <code>mosquitto<\/code> adl\u0131 ayr\u0131cal\u0131ks\u0131z bir kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015f\u0131r. Bu, e\u011fer broker bir \u015fekilde tehlikeye at\u0131l\u0131rsa, sald\u0131rgan\u0131n sistem \u00fczerinde tam kontrole sahip olmas\u0131n\u0131 engelledi\u011fi i\u00e7in iyi bir g\u00fcvenlik uygulamas\u0131d\u0131r. Bu ayar\u0131 de\u011fi\u015ftirmeyin.<\/p>\n<p>*   <strong>SSH ile G\u00fcvenli Y\u00f6netim:<\/strong> Mosquitto sunucunuza her zaman SSH \u00fczerinden ba\u011flan\u0131n. M\u00fcmk\u00fcnse SSH anahtar tabanl\u0131 kimlik do\u011frulamas\u0131n\u0131 kullan\u0131n ve \u015fifre kimlik do\u011frulamas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<\/p>\n<p>*   <strong>Fiziksel G\u00fcvenlik:<\/strong> Sunucunun fiziksel g\u00fcvenli\u011fini sa\u011flay\u0131n. Yetkisiz eri\u015fim, t\u00fcm yaz\u0131l\u0131m g\u00fcvenlik \u00f6nlemlerini ge\u00e7ersiz k\u0131labilir.<\/p>\n<h3>Mosquitto&#8217;yu Test Etme<\/h3>\n<p>T\u00fcm bu yap\u0131land\u0131rmalar\u0131 yapt\u0131ktan sonra, Mosquitto&#8217;nun bekledi\u011finiz gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve g\u00fcvenlik \u00f6nlemlerinin etkin oldu\u011fundan emin olmak i\u00e7in kapsaml\u0131 testler yapman\u0131z \u00f6nemlidir.<\/p>\n<p>*   <strong>Anonim Ba\u011flant\u0131 Testi:<\/strong> Kullan\u0131c\u0131 ad\u0131 ve \u015fifre belirtmeden ba\u011flanmaya \u00e7al\u0131\u015f\u0131n. Ba\u015far\u0131s\u0131z olmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">mosquitto_sub -h <sunucu_ip_adresi> -t \"test\/topic\"<\/code><\/pre>\n<p>*   <strong>Yanl\u0131\u015f Kimlik Bilgileriyle Ba\u011flant\u0131 Testi:<\/strong> Yanl\u0131\u015f kullan\u0131c\u0131 ad\u0131 veya \u015fifre ile ba\u011flanmaya \u00e7al\u0131\u015f\u0131n. Ba\u015far\u0131s\u0131z olmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">mosquitto_sub -h <sunucu_ip_adresi> -t \"test\/topic\" -u wrong_user -P wrong_pass<\/code><\/pre>\n<p>*   <strong>ACL Testi:<\/strong> ACL kurallar\u0131n\u0131za g\u00f6re farkl\u0131 kullan\u0131c\u0131larla farkl\u0131 konulara yay\u0131n yapmay\u0131\/abone olmay\u0131 deneyin. \u0130zin verilenler \u00e7al\u0131\u015fmal\u0131, izin verilmeyenler reddedilmelidir.<\/p>\n<p>*   <strong>SSL\/TLS Ba\u011flant\u0131 Testi:<\/strong> CA sertifikas\u0131 ile SSL\/TLS portu (8883) \u00fczerinden ba\u011flanmay\u0131 deneyin.<\/p>\n<pre><code class=\"language-bash\">mosquitto_sub -h <sunucu_ip_adresi> -p 8883 --tls-version tlsv1.2 --cafile \/path\/to\/client\/ca.crt -t \"secure\/topic\" -u admin_user -P <admin_\u015fifresi><\/code><\/pre>\n<p>*   <strong>\u0130stemci Sertifikas\u0131 Testi (e\u011fer etkinse):<\/strong> \u0130stemci sertifikas\u0131 ve anahtar\u0131 ile ba\u011flanmay\u0131 deneyin. Hem do\u011fru kimlik bilgileriyle hem de yanl\u0131\u015f veya eksik sertifika bilgileriyle test edin.<\/p>\n<h3>Sorun Giderme \u0130pu\u00e7lar\u0131<\/h3>\n<p>Kurulum veya yap\u0131land\u0131rma s\u0131ras\u0131nda sorunlarla kar\u015f\u0131la\u015fman\u0131z durumunda a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<p>*   <strong>Mosquitto Loglar\u0131n\u0131 Kontrol Edin:<\/strong> En \u00f6nemli sorun giderme arac\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/mosquitto\/mosquitto.log\n    # Veya\n    sudo journalctl -u mosquitto -f<\/code><\/pre>\n<p>    Bu loglar, ba\u011flant\u0131 hatalar\u0131, kimlik do\u011frulama sorunlar\u0131 veya sertifika hatalar\u0131 hakk\u0131nda de\u011ferli bilgiler sa\u011flar.<\/p>\n<p>*   <strong>Yap\u0131land\u0131rma Dosyas\u0131n\u0131 Do\u011frulay\u0131n:<\/strong> Mosquitto yap\u0131land\u0131rma dosyas\u0131n\u0131n s\u00f6zdizimini kontrol etmek i\u00e7in Mosquitto&#8217;yu test modunda \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">mosquitto -c \/etc\/mosquitto\/mosquitto.conf -v<\/code><\/pre>\n<p>    Bu, herhangi bir yap\u0131land\u0131rma hatas\u0131n\u0131 terminale yazd\u0131racakt\u0131r.<\/p>\n<p>*   <strong>G\u00fcvenlik Duvar\u0131 Kurallar\u0131n\u0131 Kontrol Edin:<\/strong> <code>sudo ufw status<\/code> komutuyla Mosquitto portlar\u0131na (1883, 8883) izin verildi\u011finden emin olun.<\/p>\n<p>*   <strong>Sertifika ve Anahtar \u0130zinlerini Kontrol Edin:<\/strong> Sertifika ve \u00f6zel anahtar dosyalar\u0131n\u0131n do\u011fru izinlere ve sahipli\u011fe sahip oldu\u011fundan emin olun (<code>sudo ls -l \/etc\/mosquitto\/certs<\/code>). \u00d6zel anahtarlar\u0131n sadece Mosquitto kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir olmas\u0131 gerekti\u011fini unutmay\u0131n.<\/p>\n<p>*   <strong>Sertifika Common Name:<\/strong> SSL\/TLS ba\u011flant\u0131 sorunlar\u0131 ya\u015f\u0131yorsan\u0131z, sunucu sertifikas\u0131n\u0131n Common Name&#8217;inin istemcinin ba\u011flanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131 IP adresi veya alan ad\u0131yla e\u015fle\u015fti\u011finden emin olun.<\/p>\n<p>*   <strong>Mosquitto Servisini Yeniden Ba\u015flat\u0131n:<\/strong> Herhangi bir yap\u0131land\u0131rma de\u011fi\u015fikli\u011finden sonra Mosquitto servisini yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun: <code>sudo systemctl restart mosquitto<\/code>.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Mosquitto MQTT mesajla\u015fma broker\u0131n\u0131 Ubuntu 18.04 \u00fczerine nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve kapsaml\u0131 g\u00fcvenlik \u00f6nlemleriyle nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. MQTT&#8217;nin IoT d\u00fcnyas\u0131ndaki \u00f6nemi ve Mosquitto&#8217;nun bu alandaki rol\u00fc g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, broker\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak projenizin ba\u015far\u0131s\u0131 i\u00e7in kritik bir ad\u0131md\u0131r.<\/p>\n<p>Kullan\u0131c\u0131 ad\u0131 ve \u015fifre kimlik do\u011frulamas\u0131, eri\u015fim kontrol listeleri (ACL) ve SSL\/TLS \u015fifrelemesi gibi temel g\u00fcvenlik katmanlar\u0131n\u0131 uygulayarak, Mosquitto broker\u0131n\u0131z\u0131 yetkisiz eri\u015fime ve veri ihlallerine kar\u015f\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde korumu\u015f olursunuz. \u0130stemci sertifikas\u0131 kimlik do\u011frulamas\u0131 gibi ileri d\u00fczey \u00f6nlemler, daha da y\u00fcksek bir g\u00fcvenlik seviyesi sa\u011flayabilir.<\/p>\n<p>Unutmay\u0131n ki g\u00fcvenlik s\u00fcrekli bir s\u00fcre\u00e7tir. Sunucunuzu ve Mosquitto&#8217;yu d\u00fczenli olarak g\u00fcncel tutmak, loglar\u0131 izlemek ve g\u00fcvenlik yap\u0131land\u0131rmalar\u0131n\u0131 periyodik olarak g\u00f6zden ge\u00e7irmek, sisteminizin zaman i\u00e7inde g\u00fcvende kalmas\u0131n\u0131 sa\u011flayacakt\u0131r. Bu rehberdeki ad\u0131mlar\u0131 takip ederek, IoT projeleriniz i\u00e7in sa\u011flam, g\u00fcvenli ve g\u00fcvenilir bir MQTT altyap\u0131s\u0131 olu\u015fturmu\u015f olacaks\u0131n\u0131z.<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131\nGiri\u015f: Nesnelerin \u0130nterneti (IoT) ve MQTT\nN","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-34037","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\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131 - 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-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\" \/>\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\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131\" \/>\n<meta property=\"og:description\" content=\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131 Giri\u015f: Nesnelerin \u0130nterneti (IoT) ve MQTT N\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-10T05:40:55+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=\"20 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-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131\",\"datePublished\":\"2025-11-10T05:40:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\"},\"wordCount\":2990,\"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-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\",\"name\":\"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-10T05:40:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#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\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131\"}]},{\"@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\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131 - 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-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/","og_locale":"tr_TR","og_type":"article","og_title":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131","og_description":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131 Giri\u015f: Nesnelerin \u0130nterneti (IoT) ve MQTT N","og_url":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-10T05:40:55+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131","datePublished":"2025-11-10T05:40:55+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/"},"wordCount":2990,"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-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/","url":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/","name":"Mosquitto MQTT Mesajla\u015fma Arac\u0131s\u0131n\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-10T05:40:55+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mosquitto-mqtt-mesajlasma-aracisinin-ubuntu-18-04-uzerine-kurulumu-ve-guvenliginin-saglanmasi\/#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\u0131n Ubuntu 18.04 \u00dczerine Kurulumu ve G\u00fcvenli\u011finin Sa\u011flanmas\u0131"}]},{"@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\/34037","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=34037"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34037\/revisions"}],"predecessor-version":[{"id":34038,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34037\/revisions\/34038"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}