{"id":36678,"date":"2025-12-21T14:40:48","date_gmt":"2025-12-21T11:40:48","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36678"},"modified":"2025-12-21T14:40:48","modified_gmt":"2025-12-21T11:40:48","slug":"nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/","title":{"rendered":"Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme"},"content":{"rendered":"<p><body><\/p>\n<h2>Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web siteleri ve uygulamalar i\u00e7in g\u00fcvenlik, vazge\u00e7ilmez bir unsurdur. Kullan\u0131c\u0131 verilerinin korunmas\u0131, gizlili\u011fin sa\u011flanmas\u0131 ve sitenin g\u00fcvenilirli\u011finin art\u0131r\u0131lmas\u0131 amac\u0131yla HTTPS (Hypertext Transfer Protocol Secure) kullan\u0131m\u0131 kritik \u00f6neme sahiptir. HTTPS, web taray\u0131c\u0131s\u0131 ile sunucu aras\u0131ndaki ileti\u015fimi \u015fifreleyerek \u00fc\u00e7\u00fcnc\u00fc taraflar\u0131n verileri okumas\u0131n\u0131 veya de\u011fi\u015ftirmesini engeller. Bu \u015fifreleme, SSL\/TLS (Secure Sockets Layer\/Transport Layer Security) sertifikalar\u0131 arac\u0131l\u0131\u011f\u0131yla sa\u011flan\u0131r.<\/p>\n<p>Geleneksel olarak, SSL\/TLS sertifikalar\u0131 maliyetli ve karma\u015f\u0131k bir edinme s\u00fcrecine sahipti. Ancak Let&#8217;s Encrypt projesi, bu durumu temelden de\u011fi\u015ftirerek \u00fccretsiz, otomatik ve a\u00e7\u0131k bir sertifika yetkilisi (CA) sunmu\u015ftur. Let&#8217;s Encrypt sayesinde, her web sitesi sahibi kolayca g\u00fcvenli bir ba\u011flant\u0131 kurabilir.<\/p>\n<p>Bu makalede, g\u00fc\u00e7l\u00fc ve esnek bir i\u015fletim sistemi olan FreeBSD \u00fczerinde, y\u00fcksek performansl\u0131 bir web sunucusu olan Nginx&#8217;i Let&#8217;s Encrypt ile nas\u0131l g\u00fcvenli hale getirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. FreeBSD&#8217;nin kararl\u0131l\u0131\u011f\u0131 ve Nginx&#8217;in verimlili\u011fi bir araya geldi\u011finde, g\u00fcvenli ve h\u0131zl\u0131 bir web altyap\u0131s\u0131 olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr. Bu rehber, temel sistem yap\u0131land\u0131rmas\u0131ndan sertifika edinme ve Nginx&#8217;i HTTPS i\u00e7in optimize etmeye kadar t\u00fcm s\u00fcreci kapsayacakt\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n yerine getirildi\u011finden emin olmal\u0131s\u0131n\u0131z:<\/p>\n<p>*   <strong>FreeBSD \u0130\u015fletim Sistemi:<\/strong> FreeBSD 13.x veya 14.x s\u00fcr\u00fcm\u00fc kurulu ve g\u00fcncel bir sunucuya sahip olmal\u0131s\u0131n\u0131z.<br \/>\n*   <strong>Kullan\u0131c\u0131 Yetkileri:<\/strong> Sunucuda <code>root<\/code> kullan\u0131c\u0131s\u0131 olarak veya <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 ile i\u015flem yapabilmelisiniz.<br \/>\n*   <strong>Alan Ad\u0131 (Domain Name):<\/strong> Web siteniz i\u00e7in kay\u0131tl\u0131 bir alan ad\u0131na (\u00f6rne\u011fin, <code>example.com<\/code>) sahip olman\u0131z gerekmektedir.<br \/>\n*   <strong>DNS Kay\u0131tlar\u0131:<\/strong> Alan ad\u0131n\u0131z\u0131n A veya AAAA kay\u0131tlar\u0131n\u0131n, FreeBSD sunucunuzun genel IP adresine do\u011fru \u015fekilde y\u00f6nlendirilmi\u015f olmas\u0131 zorunludur. Let&#8217;s Encrypt, sertifika talebi s\u0131ras\u0131nda alan ad\u0131n\u0131n sunucuya ait oldu\u011funu do\u011frulamak i\u00e7in bu kay\u0131tlara ihtiya\u00e7 duyar.<br \/>\n*   <strong>Temel Komut Sat\u0131r\u0131 Bilgisi:<\/strong> FreeBSD komut sat\u0131r\u0131 ortam\u0131nda temel d\u00fczeyde i\u015flem yapabilme yetene\u011fine sahip olman\u0131z beklenmektedir.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Sunucunuzun internete eri\u015fimi olmal\u0131d\u0131r.<\/p>\n<h3>FreeBSD Sisteminin Haz\u0131rlanmas\u0131<\/h3>\n<p>Sertifika edinme ve Nginx yap\u0131land\u0131rmas\u0131na ge\u00e7meden \u00f6nce FreeBSD sistemimizi gerekli yaz\u0131l\u0131mlarla donatmam\u0131z ve temel ayarlar\u0131 yapmam\u0131z gerekmektedir.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<p>Nginx, FreeBSD&#8217;nin <code>pkg<\/code> paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kolayca kurulabilir. \u00d6ncelikle sistemdeki paket listesini g\u00fcncelleyelim ve ard\u0131ndan Nginx&#8217;i kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo pkg update\nsudo pkg upgrade -y\nsudo pkg install nginx -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra Nginx&#8217;in otomatik olarak ba\u015flamas\u0131 i\u00e7in <code>rc.conf<\/code> dosyas\u0131na ekleme yapmal\u0131y\u0131z ve servisi ba\u015flatmal\u0131y\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo sysrc nginx_enable=\"YES\"\nsudo service nginx start<\/code><\/pre>\n<p>Nginx&#8217;in do\u011fru \u015fekilde \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in sunucunuzun IP adresini veya alan ad\u0131n\u0131z\u0131 bir web taray\u0131c\u0131s\u0131nda ziyaret edebilirsiniz. Varsay\u0131lan olarak &#8220;Welcome to nginx!&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Let&#8217;s Encrypt (Certbot) Kurulumu<\/h4>\n<p>Let&#8217;s Encrypt sertifikalar\u0131n\u0131 y\u00f6netmek i\u00e7in Certbot istemcisini kullanaca\u011f\u0131z. Certbot, FreeBSD&#8217;nin <code>pkg<\/code> deposunda mevcuttur. Webroot do\u011frulama y\u00f6ntemini kullanaca\u011f\u0131m\u0131z i\u00e7in <code>py39-certbot<\/code> paketini kurmam\u0131z yeterlidir. (Python s\u00fcr\u00fcm\u00fc FreeBSD s\u00fcr\u00fcm\u00fcne g\u00f6re de\u011fi\u015febilir, \u00f6rne\u011fin <code>py38-certbot<\/code> veya <code>py310-certbot<\/code> olabilir.)<\/p>\n<pre><code class=\"language-bash\">sudo pkg install py39-certbot -y<\/code><\/pre>\n<p>Baz\u0131 durumlarda <code>py39-certbot-nginx<\/code> paketi de mevcut olabilir ve Nginx yap\u0131land\u0131rmas\u0131n\u0131 otomatik olarak yapabilir. Ancak, bu makalede daha manuel ve kontrol odakl\u0131 bir yakla\u015f\u0131m olan <code>webroot<\/code> y\u00f6ntemini kullanaca\u011f\u0131z, zira bu y\u00f6ntem Nginx&#8217;in mevcut yap\u0131land\u0131rmas\u0131n\u0131 bozmadan sertifika al\u0131m\u0131na olanak tan\u0131r.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (Opsiyonel ama \u00d6nemli)<\/h4>\n<p>FreeBSD \u00fczerinde bir g\u00fcvenlik duvar\u0131 (\u00f6rne\u011fin <code>pf<\/code> veya <code>ipfw<\/code>) kullan\u0131yorsan\u0131z, web trafi\u011finin (HTTP ve HTTPS) sunucunuza ula\u015fabilmesi i\u00e7in 80 ve 443 numaral\u0131 portlar\u0131 a\u00e7man\u0131z gerekmektedir. Bu ad\u0131m, sunucunuzun d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p><strong>PF (Packet Filter) \u0130\u00e7in \u00d6rnek Yap\u0131land\u0131rma:<\/strong><br \/>\nE\u011fer <code>pf<\/code> kullan\u0131yorsan\u0131z, <code>\/etc\/pf.conf<\/code> dosyan\u0131z\u0131 d\u00fczenlemeniz gerekecektir. A\u015fa\u011f\u0131daki kurallar\u0131 dosyan\u0131za ekleyebilir veya mevcut kurallar\u0131n\u0131z\u0131 g\u00fcncelleyebilirsiniz:<\/p>\n<pre><code class=\"language-\"># \/etc\/pf.conf\n<h2>HTTP ve HTTPS trafi\u011fine izin ver<\/h2>\npass in proto tcp from any to any port { 80, 443 }<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydettikten sonra <code>pf<\/code> servisini yeniden y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo pfctl -f \/etc\/pf.conf\nsudo service pf reload<\/code><\/pre>\n<p><strong>IPFW \u0130\u00e7in \u00d6rnek Yap\u0131land\u0131rma:<\/strong><br \/>\nE\u011fer <code>ipfw<\/code> kullan\u0131yorsan\u0131z, <code>\/etc\/rc.conf<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyerek veya d\u00fczenleyerek portlar\u0131 a\u00e7abilirsiniz:<\/p>\n<pre><code class=\"language-\"># \/etc\/rc.conf\nfirewall_enable=\"YES\"\nfirewall_type=\"open\" # veya \"client\", \"server\" gibi daha k\u0131s\u0131tl\u0131 bir t\u00fcr\nfirewall_logdeny=\"YES\"\nfirewall_script=\"\/etc\/ipfw.rules\" # Kendi kural dosyan\u0131z\u0131 kullanabilirsiniz<\/code><\/pre>\n<p>Ve <code>\/etc\/ipfw.rules<\/code> dosyan\u0131zda \u015fu kurallar\u0131 tan\u0131mlay\u0131n:<\/p>\n<pre><code class=\"language-bash\"># \/etc\/ipfw.rules\n#!\/bin\/sh\n\nipfw -q flush\nipfw -q add allow all from any to any via lo0\nipfw -q add allow tcp from any to any 80 in\nipfw -q add allow tcp from any to any 443 in\nipfw -q add allow tcp from any to any 22 in # SSH i\u00e7in\nipfw -q add deny all from any to any<\/code><\/pre>\n<p>Ard\u0131ndan <code>ipfw<\/code> servisini ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service ipfw start<\/code><\/pre>\n<p>G\u00fcvenlik duvar\u0131 yap\u0131land\u0131rman\u0131z\u0131n do\u011fru oldu\u011fundan emin olmak i\u00e7in test etmeyi unutmay\u0131n.<\/p>\n<h3>Nginx Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Let&#8217;s Encrypt sertifikalar\u0131n\u0131 almadan \u00f6nce, Certbot&#8217;un alan ad\u0131n\u0131z\u0131n sahipli\u011fini do\u011frulayabilmesi i\u00e7in Nginx&#8217;i temel HTTP trafi\u011fini i\u015fleyecek \u015fekilde yap\u0131land\u0131rmam\u0131z gerekiyor.<\/p>\n<h4>HTTP Yap\u0131land\u0131rmas\u0131 (Port 80)<\/h4>\n<p>Nginx&#8217;in varsay\u0131lan yap\u0131land\u0131rma dosyas\u0131 <code>\/usr\/local\/etc\/nginx\/nginx.conf<\/code> adresindedir. Genellikle, siteye \u00f6zel yap\u0131land\u0131rmalar\u0131 <code>conf.d<\/code> dizini alt\u0131nda ayr\u0131 dosyalarda tutmak iyi bir uygulamad\u0131r.<\/p>\n<p>\u00d6ncelikle, web sitenizin dosyalar\u0131n\u0131 bar\u0131nd\u0131racak bir dizin olu\u015ftural\u0131m. Bu dizin ayn\u0131 zamanda Certbot&#8217;un do\u011frulama dosyalar\u0131n\u0131 yerle\u015ftirece\u011fi <code>webroot<\/code> dizini olacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/usr\/local\/www\/example.com\nsudo chown -R www:www \/usr\/local\/www\/example.com<\/code><\/pre>\n<p>\u015eimdi, <code>\/usr\/local\/etc\/nginx\/conf.d\/example.com.conf<\/code> ad\u0131nda yeni bir yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/usr\/local\/etc\/nginx\/conf.d\/example.com.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n ve <code>example.com<\/code> ile <code>www.example.com<\/code> k\u0131s\u0131mlar\u0131n\u0131 kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n\n    root \/usr\/local\/www\/example.com;\n    index index.html index.htm;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # Certbot do\u011frulama i\u00e7in gerekli olan .well-known dizini\n    location ~ \/.well-known\/acme-challenge {\n        allow all;\n        root \/usr\/local\/www\/example.com;\n    }\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma:<br \/>\n*   80 numaral\u0131 porttan gelen HTTP isteklerini dinler.<br \/>\n*   <code>example.com<\/code> ve <code>www.example.com<\/code> alan adlar\u0131 i\u00e7in istekleri kar\u015f\u0131lar.<br \/>\n*   Web sitesi dosyalar\u0131n\u0131 <code>\/usr\/local\/www\/example.com<\/code> dizininden sunar.<br \/>\n*   <code>\/.well-known\/acme-challenge<\/code> yoluna gelen istekleri do\u011frudan <code>webroot<\/code> dizininden sunarak Certbot&#8217;un do\u011frulama i\u015flemini yapmas\u0131na olanak tan\u0131r.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydettikten sonra, Nginx yap\u0131land\u0131rmas\u0131n\u0131n s\u00f6zdizimini kontrol edelim ve Nginx&#8217;i yeniden ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\nsudo service nginx reload<\/code><\/pre>\n<p>Herhangi bir hata mesaj\u0131 almazsan\u0131z, Nginx ba\u015far\u0131yla yeniden ba\u015flat\u0131lm\u0131\u015f demektir. Art\u0131k Certbot ile sertifika almaya haz\u0131r\u0131z.<\/p>\n<h3>Let&#8217;s Encrypt Sertifikas\u0131 Alma<\/h3>\n<p>Nginx&#8217;i HTTP isteklerini kar\u015f\u0131layacak \u015fekilde yap\u0131land\u0131rd\u0131\u011f\u0131m\u0131za g\u00f6re, Certbot kullanarak Let&#8217;s Encrypt&#8217;ten sertifika talep edebiliriz.<\/p>\n<h4>Certbot ile Sertifika Talebi<\/h4>\n<p>Certbot&#8217;u <code>webroot<\/code> eklentisiyle kullanarak sertifika talebinde bulunaca\u011f\u0131z. Bu y\u00f6ntem, Certbot&#8217;un do\u011frulama dosyalar\u0131n\u0131 belirtilen web k\u00f6k dizinine yerle\u015ftirmesini ve Nginx&#8217;in bunlar\u0131 sunmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n, <code>example.com<\/code> ve <code>www.example.com<\/code> yerine kendi alan adlar\u0131n\u0131z\u0131 ve <code>\/usr\/local\/www\/example.com<\/code> yerine web k\u00f6k dizininizi yaz\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo certbot certonly --webroot -w \/usr\/local\/www\/example.com -d example.com -d www.example.com<\/code><\/pre>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Certbot sizden baz\u0131 bilgiler isteyecektir:<\/p>\n<p>1.  <strong>E-posta Adresi:<\/strong> Acil durum bildirimleri ve sertifika yenileme hat\u0131rlat\u0131c\u0131lar\u0131 i\u00e7in bir e-posta adresi girin.<br \/>\n2.  <strong>Hizmet \u015eartlar\u0131:<\/strong> Let&#8217;s Encrypt&#8217;in hizmet \u015fartlar\u0131n\u0131 kabul etmeniz istenecektir. Kabul etmek i\u00e7in <code>A<\/code> tu\u015funa bas\u0131n.<br \/>\n3.  <strong>EFF Haber B\u00fclteni:<\/strong> \u0130sterseniz EFF&#8217;nin haber b\u00fcltenine abone olabilirsiniz. <code>Y<\/code> veya <code>N<\/code> tu\u015funa bas\u0131n.<\/p>\n<p>E\u011fer her \u015fey yolunda giderse, Certbot sertifikalar\u0131 ba\u015far\u0131yla alacak ve a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 g\u00f6sterecektir:<\/p>\n<pre><code class=\"language-\">IMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n   \/usr\/local\/etc\/letsencrypt\/live\/example.com\/fullchain.pem\n   Your key file has been saved at:\n   \/usr\/local\/etc\/letsencrypt\/live\/example.com\/privkey.pem\n   Your certificate will expire on 2024-XX-XX. To obtain a new or\n   revising version of this certificate in the future, simply run\n   certbot renew\n   ...<\/code><\/pre>\n<p>Sertifikalar\u0131n\u0131z art\u0131k <code>\/usr\/local\/etc\/letsencrypt\/live\/example.com\/<\/code> dizininde bulunmaktad\u0131r. Bu dizin i\u00e7inde genellikle \u015fu dosyalar bulunur:<br \/>\n*   <code>fullchain.pem<\/code>: Sunucu sertifikas\u0131 ve ara sertifikay\u0131 i\u00e7erir. Nginx i\u00e7in bu dosyay\u0131 kullanaca\u011f\u0131z.<br \/>\n*   <code>privkey.pem<\/code>: Sertifikan\u0131n \u00f6zel anahtar\u0131d\u0131r.<br \/>\n*   <code>chain.pem<\/code>: Sadece ara sertifikay\u0131 i\u00e7erir.<br \/>\n*   <code>cert.pem<\/code>: Sadece sunucu sertifikas\u0131n\u0131 i\u00e7erir.<\/p>\n<h4>Sertifika Yenileme ve Otomasyon<\/h4>\n<p>Let&#8217;s Encrypt sertifikalar\u0131 90 g\u00fcn boyunca ge\u00e7erlidir. Bu nedenle, sertifikalar\u0131n s\u00fcresi dolmadan \u00f6nce d\u00fczenli olarak yenilenmeleri gerekir. Certbot, bu yenileme i\u015flemini otomatikle\u015ftirmek i\u00e7in bir <code>renew<\/code> komutu sunar.<\/p>\n<p>Sertifika yenileme i\u015flemini test etmek i\u00e7in <code>dry-run<\/code> parametresiyle \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo certbot renew --dry-run<\/code><\/pre>\n<p>Bu komut, yenileme i\u015flemini ger\u00e7ekten yapmadan sim\u00fcle eder ve herhangi bir sorun olup olmad\u0131\u011f\u0131n\u0131 kontrol etmenizi sa\u011flar.<\/p>\n<p>Sertifikalar\u0131n otomatik olarak yenilenmesi i\u00e7in bir cron job olu\u015fturmak en iyi y\u00f6ntemdir. Certbot, FreeBSD&#8217;de genellikle kendi cron job&#8217;unu <code>\/usr\/local\/etc\/periodic\/daily\/<\/code> veya benzeri bir dizine yerle\u015ftirir. Ancak, Nginx&#8217;in yeni sertifikalar\u0131 kullanmaya ba\u015flamas\u0131 i\u00e7in yeniden y\u00fcklenmesi gerekti\u011fini unutmay\u0131n.<\/p>\n<p>A\u015fa\u011f\u0131daki gibi bir cron job olu\u015fturabilirsiniz. <code>sudo crontab -e<\/code> komutunu kullanarak root kullan\u0131c\u0131s\u0131n\u0131n cron tablosunu d\u00fczenleyin:<\/p>\n<pre><code class=\"language-cron\"># Her g\u00fcn \u00f6\u011fleden sonra 12:00'de veya benzeri bir zamanda \u00e7al\u0131\u015ft\u0131r\n0 12 <em> <\/em> * \/usr\/local\/bin\/certbot renew --post-hook \"service nginx reload\" >> \/var\/log\/certbot-renew.log 2>&1<\/code><\/pre>\n<p>Bu cron job, <code>certbot renew<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131r ve e\u011fer sertifikalar yenilenirse (<code>--post-hook<\/code> sayesinde), Nginx servisini yeniden y\u00fckler. Bu, Nginx&#8217;in yeni sertifikalar\u0131 kullanmaya ba\u015flamas\u0131n\u0131 sa\u011flar. Yenileme g\u00fcnl\u00fckleri <code>\/var\/log\/certbot-renew.log<\/code> dosyas\u0131na kaydedilir.<\/p>\n<h3>Nginx&#8217;i HTTPS Kullanacak \u015eekilde Yap\u0131land\u0131rma<\/h3>\n<p>Sertifikalar\u0131m\u0131z\u0131 edindi\u011fimize g\u00f6re, Nginx&#8217;i HTTPS trafi\u011fini i\u015fleyecek \u015fekilde yap\u0131land\u0131rabiliriz.<\/p>\n<h4>Sertifikalar\u0131 Nginx&#8217;e Tan\u0131tma<\/h4>\n<p>\u00d6ncelikle, daha \u00f6nce olu\u015fturdu\u011fumuz <code>\/usr\/local\/etc\/nginx\/conf.d\/example.com.conf<\/code> dosyas\u0131n\u0131 d\u00fczenleyelim. Bu dosyaya HTTPS i\u00e7in yeni bir <code>server<\/code> blo\u011fu ekleyece\u011fiz ve mevcut HTTP blo\u011funu HTTPS&#8217;e y\u00f6nlendirecek \u015fekilde g\u00fcncelleyece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/usr\/local\/etc\/nginx\/conf.d\/example.com.conf<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin. <code>example.com<\/code> ve <code>www.example.com<\/code> k\u0131s\u0131mlar\u0131n\u0131 kendi alan adlar\u0131n\u0131zla de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-nginx\"># HTTP trafi\u011fini HTTPS'e y\u00f6nlendirme\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n\n    # Certbot do\u011frulama i\u00e7in gerekli olan .well-known dizini\n    location ~ \/.well-known\/acme-challenge {\n        allow all;\n        root \/usr\/local\/www\/example.com;\n    }\n\n    # Di\u011fer t\u00fcm HTTP isteklerini HTTPS'e y\u00f6nlendir\n    return 301 https:\/\/$host$request_uri;\n}\n\n<h2>HTTPS yap\u0131land\u0131rmas\u0131<\/h2>\nserver {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name example.com www.example.com;\n\n    root \/usr\/local\/www\/example.com;\n    index index.html index.htm;\n\n    ssl_certificate \/usr\/local\/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\n    ssl_certificate_key \/usr\/local\/etc\/letsencrypt\/live\/example.com\/privkey.pem;\n\n    # SSL\/TLS ayarlar\u0131 (sonraki b\u00f6l\u00fcmde daha detayl\u0131 ele al\u0131nacak)\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';\n    ssl_prefer_server_ciphers on;\n\n    # HSTS ayar\u0131 (sonraki b\u00f6l\u00fcmde daha detayl\u0131 ele al\u0131nacak)\n    add_header Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\" always;\n\n    # OCSP Stapling (sonraki b\u00f6l\u00fcmde daha detayl\u0131 ele al\u0131nacak)\n    ssl_stapling on;\n    ssl_stapling_verify on;\n    ssl_trusted_certificate \/usr\/local\/etc\/letsencrypt\/live\/example.com\/chain.pem;\n    resolver 8.8.8.8 8.8.4.4 valid=300s; # G\u00fcvenilir DNS sunucular\u0131 kullan\u0131n\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # Hata sayfalar\u0131\n    error_page 404 \/404.html;\n    location = \/404.html {\n        internal;\n    }\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rmada, ilk <code>server<\/code> blo\u011fu 80 numaral\u0131 porttan gelen t\u00fcm istekleri (Certbot do\u011frulama hari\u00e7) 301 kal\u0131c\u0131 y\u00f6nlendirmesiyle HTTPS&#8217;e y\u00f6nlendirir. \u0130kinci <code>server<\/code> blo\u011fu ise 443 numaral\u0131 porttan gelen HTTPS isteklerini i\u015fler, Let&#8217;s Encrypt sertifikalar\u0131n\u0131 kullan\u0131r ve temel SSL\/TLS ayarlar\u0131n\u0131 i\u00e7erir.<\/p>\n<p>Yap\u0131land\u0131rmay\u0131 kaydettikten sonra Nginx&#8217;in s\u00f6zdizimini kontrol edin ve yeniden y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\nsudo service nginx reload<\/code><\/pre>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zdan <code>http:\/\/example.com<\/code> adresini ziyaret etti\u011finizde otomatik olarak <code>https:\/\/example.com<\/code> adresine y\u00f6nlendirilmeniz ve ba\u011flant\u0131n\u0131n g\u00fcvenli (kilit simgesi) oldu\u011funu g\u00f6rmeniz gerekir.<\/p>\n<h4>HTTP&#8217;den HTTPS&#8217;e Y\u00f6nlendirme<\/h4>\n<p>Yukar\u0131daki yap\u0131land\u0131rmada zaten bu ad\u0131m\u0131 ger\u00e7ekle\u015ftirdik. HTTP (port 80) trafi\u011fini HTTPS (port 443) trafi\u011fine y\u00f6nlendirmek, kullan\u0131c\u0131lar\u0131n sitenize her zaman g\u00fcvenli bir ba\u011flant\u0131 \u00fczerinden eri\u015fmesini sa\u011flar. Bu, \u00f6zellikle eski yer imleri veya manuel olarak yaz\u0131lan URL&#8217;ler i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n\n    # Certbot do\u011frulama i\u00e7in gerekli olan .well-known dizini\n    location ~ \/.well-known\/acme-challenge {\n        allow all;\n        root \/usr\/local\/www\/example.com;\n    }\n\n    # Di\u011fer t\u00fcm HTTP isteklerini HTTPS'e y\u00f6nlendir\n    return 301 https:\/\/$host$request_uri;\n}<\/code><\/pre>\n<p>Bu blok, Certbot do\u011frulama istekleri hari\u00e7 t\u00fcm HTTP isteklerini HTTPS&#8217;e y\u00f6nlendirir. <code>301<\/code> y\u00f6nlendirmesi kal\u0131c\u0131 bir y\u00f6nlendirmedir ve arama motorlar\u0131 taraf\u0131ndan tercih edilir.<\/p>\n<h4>HTTP Strict Transport Security (HSTS) Uygulamas\u0131<\/h4>\n<p>HSTS (HTTP Strict Transport Security), web sitelerinin taray\u0131c\u0131lara yaln\u0131zca HTTPS \u00fczerinden eri\u015filmesi gerekti\u011fini bildiren bir g\u00fcvenlik mekanizmas\u0131d\u0131r. Bir taray\u0131c\u0131 bir kez HSTS ba\u015fl\u0131\u011f\u0131n\u0131 ald\u0131\u011f\u0131nda, belirlenen s\u00fcre boyunca o alan ad\u0131na yap\u0131lan t\u00fcm sonraki istekleri otomatik olarak HTTPS&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fcr, HTTP \u00fczerinden yap\u0131lan istekleri engeller. Bu, SSL soygunu (SSL stripping) gibi sald\u0131r\u0131lar\u0131 \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<p>HSTS&#8217;i etkinle\u015ftirmek i\u00e7in HTTPS <code>server<\/code> blo\u011funuza a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-nginx\">add_header Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\" always;<\/code><\/pre>\n<p>*   <code>max-age<\/code>: Taray\u0131c\u0131n\u0131n bu kural\u0131 ne kadar s\u00fcreyle hat\u0131rlayaca\u011f\u0131n\u0131 saniye cinsinden belirtir (iki y\u0131l i\u00e7in 63072000 saniye).<br \/>\n*   <code>includeSubDomains<\/code>: Alt alan adlar\u0131 i\u00e7in de HSTS&#8217;in ge\u00e7erli olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>preload<\/code>: Alan ad\u0131n\u0131z\u0131 HSTS preload listesine eklemek isterseniz bu anahtar kelimeyi kullan\u0131rs\u0131n\u0131z. <strong>Dikkat:<\/strong> Preload listesine eklenmek geri al\u0131namaz bir i\u015flemdir ve sitenizin her zaman HTTPS \u00fczerinden eri\u015filebilir olmas\u0131n\u0131 gerektirir. E\u011fer sitenizde HTTPS&#8217;i kapatmay\u0131 d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z bu se\u00e7ene\u011fi kullanmay\u0131n.<\/p>\n<p>HSTS ba\u015fl\u0131\u011f\u0131n\u0131 ekledikten sonra Nginx&#8217;i yeniden y\u00fcklemeyi unutmay\u0131n.<\/p>\n<h4>OCSP Stapling Etkinle\u015ftirme<\/h4>\n<p>OCSP (Online Certificate Status Protocol) stapling, bir web sunucusunun SSL\/TLS sertifikas\u0131n\u0131n ge\u00e7erlilik durumunu sertifika yetkilisinden (CA) d\u00fczenli olarak sorgulamas\u0131n\u0131 ve bu durumu \u00f6nbelle\u011fe almas\u0131n\u0131 sa\u011flar. Taray\u0131c\u0131 bir web sitesine ba\u011fland\u0131\u011f\u0131nda, sunucu bu \u00f6nbelle\u011fe al\u0131nm\u0131\u015f ge\u00e7erlilik durumunu (stapled OCSP response) taray\u0131c\u0131ya sunar. Bu, taray\u0131c\u0131n\u0131n CA&#8217;ya do\u011frudan ba\u011flanarak sertifika durumunu sorgulama ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r, b\u00f6ylece ba\u011flant\u0131 h\u0131z\u0131 artar ve kullan\u0131c\u0131 gizlili\u011fi korunur.<\/p>\n<p>OCSP stapling&#8217;i etkinle\u015ftirmek i\u00e7in HTTPS <code>server<\/code> blo\u011funuza a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-nginx\">ssl_stapling on;\nssl_stapling_verify on;\nssl_trusted_certificate \/usr\/local\/etc\/letsencrypt\/live\/example.com\/chain.pem;\nresolver 8.8.8.8 8.8.4.4 valid=300s; # G\u00fcvenilir DNS sunucular\u0131 kullan\u0131n (Google DNS \u00f6rne\u011fi)\nresolver_timeout 5s;<\/code><\/pre>\n<p>*   <code>ssl_stapling on;<\/code>: OCSP stapling&#8217;i etkinle\u015ftirir.<br \/>\n*   <code>ssl_stapling_verify on;<\/code>: Sunucunun OCSP yan\u0131t\u0131n\u0131n ge\u00e7erlili\u011fini do\u011frulamas\u0131 gerekti\u011fini belirtir.<br \/>\n*   <code>ssl_trusted_certificate<\/code>: CA taraf\u0131ndan sa\u011flanan zincir sertifikas\u0131n\u0131n yolunu belirtir (<code>chain.pem<\/code>).<br \/>\n*   <code>resolver<\/code>: Nginx&#8217;in OCSP sorgular\u0131 i\u00e7in kullanaca\u011f\u0131 DNS sunucular\u0131n\u0131 belirtir. G\u00fcvenilir ve h\u0131zl\u0131 DNS sunucular\u0131 kullanmak \u00f6nemlidir.<\/p>\n<p>Bu ayarlar\u0131 yapt\u0131ktan sonra Nginx&#8217;i yeniden y\u00fckleyin.<\/p>\n<h3>Ek G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h3>\n<p>Nginx&#8217;i Let&#8217;s Encrypt ile g\u00fcvenli hale getirmek \u00f6nemli bir ad\u0131md\u0131r, ancak web sunucunuzun genel g\u00fcvenli\u011fini art\u0131rmak i\u00e7in ek \u00f6nlemler alabilirsiniz.<\/p>\n<h4>G\u00fc\u00e7l\u00fc \u015eifreleme Algoritmalar\u0131 ve TLS Protokolleri<\/h4>\n<p>SSL\/TLS yap\u0131land\u0131rman\u0131zda yaln\u0131zca g\u00fc\u00e7l\u00fc \u015fifreleme algoritmalar\u0131 ve g\u00fcncel TLS protokollerini kullanmal\u0131s\u0131n\u0131z. Eski ve zay\u0131f protokoller (TLSv1.0, TLSv1.1) ile zay\u0131f \u015fifreleme paketlerini devre d\u0131\u015f\u0131 b\u0131rakmak \u00f6nemlidir.<\/p>\n<p>HTTPS <code>server<\/code> blo\u011funuza a\u015fa\u011f\u0131daki ayarlar\u0131 ekleyebilir veya mevcutlar\u0131 g\u00fcncelleyebilirsiniz:<\/p>\n<pre><code class=\"language-nginx\">ssl_protocols TLSv1.2 TLSv1.3;\nssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';\nssl_prefer_server_ciphers on;<\/code><\/pre>\n<p>*   <code>ssl_protocols<\/code>: Yaln\u0131zca TLSv1.2 ve TLSv1.3&#8217;e izin verir.<br \/>\n*   <code>ssl_ciphers<\/code>: G\u00fc\u00e7l\u00fc ve g\u00fcvenli \u015fifreleme paketlerini listeler. Bu liste zamanla g\u00fcncellenebilir, en g\u00fcncel ve g\u00fcvenli listeler i\u00e7in SSL Labs gibi kaynaklar\u0131 kontrol edebilirsiniz.<br \/>\n*   <code>ssl_prefer_server_ciphers on;<\/code>: Sunucunun kendi \u015fifreleme paketi tercihini kullanmas\u0131n\u0131 sa\u011flar, b\u00f6ylece daha g\u00fcvenli olanlar tercih edilir.<\/p>\n<p>Ayr\u0131ca, Diffie-Hellman anahtar de\u011fi\u015fimi i\u00e7in g\u00fc\u00e7l\u00fc bir parametre dosyas\u0131 olu\u015fturmak, ileri gizlili\u011fi (Perfect Forward Secrecy &#8211; PFS) art\u0131r\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo openssl dhparam -out \/usr\/local\/etc\/nginx\/dhparam.pem 4096<\/code><\/pre>\n<p>Bu i\u015flem biraz zaman alabilir. Olu\u015fturduktan sonra Nginx yap\u0131land\u0131rman\u0131za ekleyin:<\/p>\n<pre><code class=\"language-nginx\">ssl_dhparam \/usr\/local\/etc\/nginx\/dhparam.pem;<\/code><\/pre>\n<p>Bu ayarlar, Nginx&#8217;in genel SSL\/TLS g\u00fcvenli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<h4>Nginx G\u00fcvenlik Mod\u00fclleri (ModSecurity gibi)<\/h4>\n<p>Web uygulaman\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in Nginx ile entegre olabilen Web Uygulama G\u00fcvenlik Duvar\u0131 (WAF) mod\u00fclleri kullanabilirsiniz. ModSecurity gibi WAF&#8217;lar, yayg\u0131n web sald\u0131r\u0131lar\u0131na (SQL enjeksiyonu, XSS vb.) kar\u015f\u0131 koruma sa\u011flayabilir. Bu mod\u00fcllerin kurulumu ve yap\u0131land\u0131rmas\u0131 bu makalenin kapsam\u0131n\u0131n d\u0131\u015f\u0131nda olsa da, genel g\u00fcvenlik stratejinizin bir par\u00e7as\u0131 olarak de\u011ferlendirilmelidir.<\/p>\n<h4>Loglama ve \u0130zleme<\/h4>\n<p>Nginx eri\u015fim ve hata g\u00fcnl\u00fcklerini d\u00fczenli olarak izlemek, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 veya sald\u0131r\u0131 giri\u015fimlerini tespit etmek i\u00e7in hayati \u00f6neme sahiptir.<br \/>\n*   <strong>Eri\u015fim G\u00fcnl\u00fckleri:<\/strong> <code>\/var\/log\/nginx\/access.log<\/code><br \/>\n*   <strong>Hata G\u00fcnl\u00fckleri:<\/strong> <code>\/var\/log\/nginx\/error.log<\/code><\/p>\n<p>Bu g\u00fcnl\u00fckleri analiz etmek i\u00e7in <code>grep<\/code>, <code>awk<\/code>, <code>tail<\/code> gibi komut sat\u0131r\u0131 ara\u00e7lar\u0131n\u0131 veya ELK Stack (Elasticsearch, Logstash, Kibana) gibi daha geli\u015fmi\u015f \u00e7\u00f6z\u00fcmleri kullanabilirsiniz. Ayr\u0131ca, Fail2ban gibi ara\u00e7lar, tekrar eden ba\u015far\u0131s\u0131z giri\u015f denemelerini veya \u015f\u00fcpheli IP adreslerini otomatik olarak engelleyerek sunucunuzu koruyabilir.<\/p>\n<h4>D\u00fczenli G\u00fcncellemeler<\/h4>\n<p>\u0130\u015fletim sistemini, Nginx&#8217;i ve Certbot&#8217;u d\u00fczenli olarak g\u00fcncellemek, bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 korunman\u0131n en temel yoludur.<\/p>\n<pre><code class=\"language-bash\">sudo pkg update\nsudo pkg upgrade -y<\/code><\/pre>\n<p>Bu komutlar\u0131 d\u00fczenli aral\u0131klarla \u00e7al\u0131\u015ft\u0131rmak, sisteminizin g\u00fcncel ve g\u00fcvenli kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum ve yap\u0131land\u0131rma s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>Nginx Ba\u015flam\u0131yor veya Yeniden Y\u00fcklenmiyor:<\/strong><br \/>\n    *   <code>sudo nginx -t<\/code> komutuyla yap\u0131land\u0131rma dosyas\u0131ndaki s\u00f6zdizimi hatalar\u0131n\u0131 kontrol edin.<br \/>\n    *   <code>sudo service nginx status<\/code> komutuyla Nginx servisinin durumunu kontrol edin.<br \/>\n    *   Nginx hata g\u00fcnl\u00fcklerini (<code>\/var\/log\/nginx\/error.log<\/code>) inceleyin.<br \/>\n*   <strong>Web Sitesine HTTP veya HTTPS \u00dczerinden Eri\u015filemiyor:<\/strong><br \/>\n    *   G\u00fcvenlik duvar\u0131n\u0131z\u0131n (PF\/IPFW) 80 ve 443 numaral\u0131 portlara izin verdi\u011finden emin olun.<br \/>\n    *   DNS kay\u0131tlar\u0131n\u0131z\u0131n do\u011fru IP adresine y\u00f6nlendirildi\u011fini kontrol edin.<br \/>\n    *   Nginx <code>server_name<\/code> direktifindeki alan adlar\u0131n\u0131n do\u011fru oldu\u011fundan emin olun.<br \/>\n*   <strong>Certbot Sertifika Alam\u0131yor (Do\u011frulama Hatas\u0131):<\/strong><br \/>\n    *   Alan ad\u0131n\u0131z\u0131n A\/AAAA kay\u0131tlar\u0131n\u0131n sunucunuzun genel IP adresini g\u00f6sterdi\u011finden emin olun.<br \/>\n    *   Nginx&#8217;in 80 numaral\u0131 porttan eri\u015filebilir oldu\u011fundan ve <code>\/.well-known\/acme-challenge<\/code> dizinine gelen istekleri do\u011fru \u015fekilde i\u015fledi\u011finden emin olun.<br \/>\n    *   Certbot&#8217;un loglar\u0131n\u0131 (<code>\/var\/log\/letsencrypt\/<\/code>) kontrol edin.<br \/>\n    *   <code>--webroot -w<\/code> parametresinde belirtilen dizinin do\u011fru oldu\u011fundan ve Nginx&#8217;in bu dizine yazma izni oldu\u011fundan emin olun.<br \/>\n*   <strong>Sertifika S\u00fcresi Doluyor:<\/strong><br \/>\n    *   Cron job&#8217;unuzun do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve <code>certbot renew<\/code> komutunun Nginx&#8217;i yeniden y\u00fckledi\u011finden emin olun.<br \/>\n    *   <code>sudo certbot renew --dry-run<\/code> komutuyla manuel olarak yenilemeyi test edin.<br \/>\n*   <strong>Taray\u0131c\u0131da G\u00fcvenlik Uyar\u0131s\u0131:<\/strong><br \/>\n    *   Sertifika zincirinin do\u011fru oldu\u011fundan emin olun (<code>fullchain.pem<\/code> kullan\u0131ld\u0131\u011f\u0131ndan).<br \/>\n    *   Taray\u0131c\u0131n\u0131z\u0131n \u00f6nbelle\u011fini temizleyip tekrar deneyin.<br \/>\n    *   SSL Labs SSL Testi gibi online ara\u00e7larla sitenizin SSL yap\u0131land\u0131rmas\u0131n\u0131 kontrol edin. Bu test, zay\u0131f \u015fifrelemeler, eksik sertifika zincirleri veya di\u011fer yap\u0131land\u0131rma sorunlar\u0131n\u0131 tespit etmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, FreeBSD i\u015fletim sistemi \u00fczerinde Nginx web sunucusunu Let&#8217;s Encrypt ile nas\u0131l g\u00fcvenli hale getirece\u011finizi detayl\u0131 bir \u015fekilde ele ald\u0131k. Nginx kurulumundan ba\u015flayarak, Certbot ile \u00fccretsiz SSL\/TLS sertifikalar\u0131 edinme, Nginx&#8217;i HTTPS i\u00e7in yap\u0131land\u0131rma ve otomatik yenileme s\u00fcre\u00e7lerini ad\u0131m ad\u0131m uygulad\u0131k. Ayr\u0131ca, HTTP Strict Transport Security (HSTS) ve OCSP Stapling gibi ek g\u00fcvenlik \u00f6nlemleriyle birlikte, g\u00fc\u00e7l\u00fc \u015fifreleme algoritmalar\u0131 ve d\u00fczenli g\u00fcncellemeler gibi genel g\u00fcvenlik ipu\u00e7lar\u0131n\u0131 da sunduk.<\/p>\n<p>HTTPS&#8217;in web g\u00fcvenli\u011fi ve kullan\u0131c\u0131 gizlili\u011fi i\u00e7in ne kadar kritik oldu\u011funu bir kez daha vurgulamak gerekir. Let&#8217;s Encrypt sayesinde bu g\u00fcvenlik katman\u0131n\u0131 uygulamak art\u0131k her zamankinden daha kolay ve \u00fccretsizdir. FreeBSD&#8217;nin sa\u011flaml\u0131\u011f\u0131 ve Nginx&#8217;in performans\u0131 ile birle\u015fen bu g\u00fcvenlik katman\u0131, web siteniz i\u00e7in g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir temel olu\u015fturacakt\u0131r.<\/p>\n<p>Unutmay\u0131n ki siber g\u00fcvenlik s\u00fcrekli geli\u015fen bir aland\u0131r. Bu rehberdeki ad\u0131mlar\u0131 takip ederek sa\u011flam bir ba\u015flang\u0131\u00e7 yapsan\u0131z da, g\u00fcncel g\u00fcvenlik tehditleri ve en iyi uygulamalar hakk\u0131nda bilgi sahibi olmaya devam etmek \u00f6nemlidir. D\u00fczenli sistem g\u00fcncellemeleri, g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131n g\u00f6zden ge\u00e7irilmesi ve web uygulaman\u0131z\u0131n kendi g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 korunmas\u0131, web altyap\u0131n\u0131z\u0131n uzun vadeli g\u00fcvenli\u011fini sa\u011flamak i\u00e7in hayati \u00f6neme sahiptir. Bu ad\u0131mlar\u0131 uygulayarak, hem siz hem de kullan\u0131c\u0131lar\u0131n\u0131z i\u00e7in daha g\u00fcvenli bir internet deneyimi sunacaks\u0131n\u0131z.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web siteleri ve uygulamalar i\u00e7in g\u00fcvenl","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":[1504],"tags":[],"class_list":{"0":"post-36678","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-nginx","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>Nginx&#039;i Let&#039;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme - 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\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx&#039;i Let&#039;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme\" \/>\n<meta property=\"og:description\" content=\"Nginx&#039;i Let&#039;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web siteleri ve uygulamalar i\u00e7in g\u00fcvenl\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-21T11:40:48+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=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme\",\"datePublished\":\"2025-12-21T11:40:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\"},\"wordCount\":2959,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Nginx\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\",\"name\":\"Nginx'i Let's Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-21T11:40:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme\"}]},{\"@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":"Nginx'i Let's Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme - 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\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/","og_locale":"tr_TR","og_type":"article","og_title":"Nginx'i Let's Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme","og_description":"Nginx'i Let's Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda web siteleri ve uygulamalar i\u00e7in g\u00fcvenl","og_url":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-21T11:40:48+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme","datePublished":"2025-12-21T11:40:48+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/"},"wordCount":2959,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Nginx"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/","url":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/","name":"Nginx'i Let's Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-21T11:40:48+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nginxi-lets-encrypt-ile-freebsd-uzerinde-guvenli-hale-getirme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx&#8217;i Let&#8217;s Encrypt ile FreeBSD \u00dczerinde G\u00fcvenli Hale Getirme"}]},{"@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\/36678","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=36678"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36678\/revisions"}],"predecessor-version":[{"id":36679,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36678\/revisions\/36679"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36678"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}