{"id":39469,"date":"2026-02-22T05:40:44","date_gmt":"2026-02-22T02:40:44","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39469"},"modified":"2026-02-22T05:40:44","modified_gmt":"2026-02-22T02:40:44","slug":"ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/","title":{"rendered":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz internet d\u00fcnyas\u0131nda g\u00fcvenlik, hem kullan\u0131c\u0131lar hem de web y\u00f6neticileri i\u00e7in en \u00f6nemli \u00f6nceliklerden biridir. Web siteniz ile kullan\u0131c\u0131lar\u0131n\u0131z aras\u0131nda ger\u00e7ekle\u015fen t\u00fcm veri al\u0131\u015fveri\u015finin \u015fifrelenmesi, hassas bilgilerin (\u015fifreler, kredi kart\u0131 bilgileri vb.) k\u00f6t\u00fc niyetli ki\u015filer taraf\u0131ndan ele ge\u00e7irilmesini engellemek i\u00e7in hayati \u00f6nem ta\u015f\u0131r. \u0130\u015fte bu noktada SSL\/TLS (Secure Sockets Layer\/Transport Layer Security) teknolojisi devreye girer. SSL\/TLS, web sunucusu ile web taray\u0131c\u0131s\u0131 aras\u0131ndaki ileti\u015fimi \u015fifreleyerek verilerin g\u00fcvenli\u011fini sa\u011flar ve ayn\u0131 zamanda sunucunun kimli\u011fini do\u011frular.<\/p>\n<p>Bir SSL sertifikas\u0131, bir web sitesinin kimli\u011fini do\u011frulayan ve \u015fifreli bir ba\u011flant\u0131 kurmay\u0131 sa\u011flayan dijital bir dosyad\u0131r. Genellikle bu sertifikalar, g\u00fcvenilir bir \u00fc\u00e7\u00fcnc\u00fc taraf olan Sertifika Yetkilileri (Certificate Authority &#8211; CA) taraf\u0131ndan imzalan\u0131r. Ancak bazen, \u00f6zellikle geli\u015ftirme ortamlar\u0131nda, test sunucular\u0131nda, dahili uygulamalarda veya ki\u015fisel projelerde, bir CA&#8217;dan sertifika almak pratik veya gerekli olmayabilir. Bu gibi durumlarda, &#8220;kendi kendine imzalanm\u0131\u015f&#8221; (self-signed) bir SSL sertifikas\u0131 olu\u015fturmak iyi bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p>Kendi kendine imzalanm\u0131\u015f bir SSL sertifikas\u0131, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, herhangi bir \u00fc\u00e7\u00fcnc\u00fc taraf CA taraf\u0131ndan de\u011fil, do\u011frudan sizin taraf\u0131n\u0131zdan imzalanm\u0131\u015ft\u0131r. Bu sertifikalar, t\u0131pk\u0131 CA imzal\u0131 sertifikalar gibi ileti\u015fimi \u015fifreler, ancak taray\u0131c\u0131lar taraf\u0131ndan otomatik olarak g\u00fcvenilir kabul edilmezler. \u00c7\u00fcnk\u00fc taray\u0131c\u0131lar, sertifikay\u0131 imzalayan yetkilinin kendi g\u00fcvenilir CA listesinde olmad\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcr ve kullan\u0131c\u0131ya bir g\u00fcvenlik uyar\u0131s\u0131 g\u00f6sterir. Bu uyar\u0131, sertifikan\u0131n do\u011frulanamad\u0131\u011f\u0131n\u0131 ve ba\u011flant\u0131n\u0131n potansiyel olarak g\u00fcvensiz olabilece\u011fini belirtir.<\/p>\n<p>Bu kapsaml\u0131 rehberde, Ubuntu 20.04 i\u015fletim sistemi \u00fczerinde \u00e7al\u0131\u015fan Apache web sunucunuz i\u00e7in kendi kendine imzalanm\u0131\u015f bir SSL sertifikas\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz. Bu ad\u0131mlar\u0131 takip ederek, geli\u015ftirme ve test ortamlar\u0131n\u0131zda g\u00fcvenli HTTPS ba\u011flant\u0131lar\u0131n\u0131 kolayca etkinle\u015ftirebileceksiniz.<\/p>\n<h2>\u00d6n Ko\u015fullar<\/h2>\n<p>Bu rehberdeki ad\u0131mlar\u0131 ba\u015far\u0131yla uygulayabilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n ko\u015fullara sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>Ubuntu 20.04 Sunucusu:<\/strong> Ubuntu 20.04 (Focal Fossa) y\u00fckl\u00fc bir sunucuya sahip olman\u0131z gerekmektedir.<br \/>\n*   <strong>Root veya Sudo Eri\u015fimi:<\/strong> Sunucuda root kullan\u0131c\u0131s\u0131 olarak veya <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 olarak oturum a\u00e7m\u0131\u015f olmal\u0131s\u0131n\u0131z. T\u00fcm komutlar <code>sudo<\/code> \u00f6nekiyle \u00e7al\u0131\u015ft\u0131r\u0131lacakt\u0131r.<br \/>\n*   <strong>Apache Web Sunucusu:<\/strong> Sunucunuzda Apache web sunucusunun kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmas\u0131 gerekmektedir. E\u011fer Apache kurulu de\u011filse, a\u015fa\u011f\u0131daki komutlarla kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\n    sudo apt install apache2\n    sudo systemctl start apache2\n    sudo systemctl enable apache2<\/code><\/pre>\n<p>*   <strong>Temel Komut Sat\u0131r\u0131 Bilgisi:<\/strong> Linux komut sat\u0131r\u0131 ve metin d\u00fczenleyici (nano, vim vb.) kullan\u0131m\u0131 hakk\u0131nda temel bilgiye sahip olman\u0131z faydal\u0131 olacakt\u0131r.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131 (Opsiyonel):<\/strong> E\u011fer sunucunuzda UFW gibi bir g\u00fcvenlik duvar\u0131 etkinse, HTTPS trafi\u011fine izin vermek i\u00e7in gerekli ayarlamalar\u0131 yapman\u0131z gerekebilir.<\/p>\n<h2>Ad\u0131m 1: Apache&#8217;nin G\u00fcncel Oldu\u011fundan Emin Olma<\/h2>\n<p>Herhangi bir yaz\u0131l\u0131m yap\u0131land\u0131rmas\u0131na ba\u015flamadan \u00f6nce, sisteminizin ve kurulu paketlerinizin g\u00fcncel oldu\u011fundan emin olmak her zaman iyi bir uygulamad\u0131r. Bu, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r ve en son kararl\u0131l\u0131k d\u00fczeltmelerini alman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak paket listenizi g\u00fcncelleyin ve y\u00fckl\u00fc paketlerinizi y\u00fckseltin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p><code>sudo apt update<\/code> komutu, yerel paket indeksinizi uzak depolardaki en son bilgilerle senkronize eder. Bu, hangi paketlerin g\u00fcncellenebilece\u011fini veya yeni paketlerin mevcut olup olmad\u0131\u011f\u0131n\u0131 \u00f6\u011frenmenizi sa\u011flar. <code>sudo apt upgrade -y<\/code> komutu ise, indirilen paket indeksine g\u00f6re g\u00fcncellenebilecek t\u00fcm paketleri y\u00fckseltir. <code>-y<\/code> bayra\u011f\u0131, t\u00fcm onay istemlerine otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 vermenizi sa\u011flar, bu da y\u00fckseltme i\u015flemini kesintisiz hale getirir.<\/p>\n<h2>Ad\u0131m 2: SSL Mod\u00fcl\u00fcn\u00fc Etkinle\u015ftirme<\/h2>\n<p>Apache&#8217;nin SSL\/TLS ba\u011flant\u0131lar\u0131n\u0131 i\u015fleyebilmesi i\u00e7in <code>mod_ssl<\/code> mod\u00fcl\u00fcn\u00fcn etkinle\u015ftirilmesi gerekir. Bu mod\u00fcl, \u015fifreleme ve sertifika y\u00f6netimi i\u00e7in gerekli olan t\u00fcm i\u015flevleri sa\u011flar.<\/p>\n<p>SSL mod\u00fcl\u00fcn\u00fc etkinle\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod ssl<\/code><\/pre>\n<p><code>a2enmod<\/code> (Apache 2 Enable Module) komutu, belirtilen Apache mod\u00fcl\u00fcn\u00fc etkinle\u015ftirir. Bu komut, mod\u00fcl\u00fcn yap\u0131land\u0131rma dosyas\u0131n\u0131 <code>mods-available<\/code> dizininden <code>mods-enabled<\/code> dizinine bir sembolik ba\u011flant\u0131 olu\u015fturarak etkinle\u015ftirir.<\/p>\n<p>Mod\u00fcl\u00fc etkinle\u015ftirdikten sonra, de\u011fi\u015fikliklerin Apache taraf\u0131ndan uygulanabilmesi i\u00e7in web sunucusunu yeniden ba\u015flatman\u0131z gerekmektedir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2<\/code><\/pre>\n<p>Bu komut, Apache hizmetini durdurur ve ard\u0131ndan yeniden ba\u015flat\u0131r. Yeniden ba\u015flatma i\u015flemi tamamland\u0131\u011f\u0131nda, <code>mod_ssl<\/code> art\u0131k etkin ve SSL ba\u011flant\u0131lar\u0131n\u0131 kabul etmeye haz\u0131r olacakt\u0131r.<\/p>\n<h2>Ad\u0131m 3: Kendi Kendine \u0130mzalanm\u0131\u015f SSL Sertifikas\u0131 Olu\u015fturma<\/h2>\n<p>Bu ad\u0131mda, OpenSSL arac\u0131n\u0131 kullanarak kendi kendine imzalanm\u0131\u015f bir SSL sertifikas\u0131 ve buna kar\u015f\u0131l\u0131k gelen \u00f6zel anahtar dosyas\u0131n\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<h3>Sertifika ve Anahtar Dosyalar\u0131 \u0130\u00e7in Dizin Olu\u015fturma<\/h3>\n<p>Ubuntu&#8217;da SSL sertifikalar\u0131 ve \u00f6zel anahtarlar i\u00e7in standart dizinler s\u0131ras\u0131yla <code>\/etc\/ssl\/certs<\/code> ve <code>\/etc\/ssl\/private<\/code> \u015feklindedir. Bu dizinler genellikle varsay\u0131lan olarak mevcuttur. Ancak, sertifikalar\u0131n\u0131z\u0131 daha d\u00fczenli tutmak veya Apache&#8217;ye \u00f6zel sertifikalar\u0131 ayr\u0131 bir yerde saklamak isterseniz, \u00f6zel bir dizin de olu\u015fturabilirsiniz. Bu rehberde, standart dizinleri kullanaca\u011f\u0131z ancak yine de bir kontrol yapabiliriz:<\/p>\n<pre><code class=\"language-bash\">ls -ld \/etc\/ssl\/certs \/etc\/ssl\/private<\/code><\/pre>\n<p>Bu komut, belirtilen dizinlerin var olup olmad\u0131\u011f\u0131n\u0131 ve izinlerini g\u00f6sterir. E\u011fer dizinler mevcut de\u011filse (ki bu nadir bir durumdur), a\u015fa\u011f\u0131daki gibi olu\u015fturabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/etc\/ssl\/certs\nsudo mkdir -p \/etc\/ssl\/private<\/code><\/pre>\n<h3>OpenSSL Kullanarak Sertifika ve Anahtar Olu\u015fturma<\/h3>\n<p>\u015eimdi, OpenSSL komutunu kullanarak sertifika ve \u00f6zel anahtar dosyas\u0131n\u0131 olu\u015fturaca\u011f\u0131z. A\u015fa\u011f\u0131daki komutu dikkatlice inceleyerek \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \/etc\/ssl\/private\/apache-selfsigned.key -out \/etc\/ssl\/certs\/apache-selfsigned.crt<\/code><\/pre>\n<p>Bu komut olduk\u00e7a g\u00fc\u00e7l\u00fcd\u00fcr ve bir\u00e7ok parametre i\u00e7erir. Her bir parametrenin ne anlama geldi\u011fini a\u00e7\u0131klayal\u0131m:<\/p>\n<p>*   <code>openssl req<\/code>: Bu, OpenSSL&#8217;in sertifika imzalama iste\u011fi (CSR) ve sertifika olu\u015fturma i\u015flevini \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>-x509<\/code>: Bu bayrak, bir sertifika imzalama iste\u011fi (CSR) yerine do\u011frudan kendi kendine imzalanm\u0131\u015f bir X.509 sertifikas\u0131 olu\u015fturulaca\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>-nodes<\/code>: Bu (no DES) bayra\u011f\u0131, \u00f6zel anahtar dosyas\u0131n\u0131n \u015fifrelenmeyece\u011fini belirtir. Bu, Apache&#8217;nin her yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda bir parola sormas\u0131n\u0131 engeller. \u00dcretim ortamlar\u0131nda genellikle anahtar\u0131 \u015fifrelemek tercih edilir, ancak test ve geli\u015ftirme ortamlar\u0131 i\u00e7in parola istemi s\u0131k\u0131c\u0131 olabilir.<br \/>\n*   <code>-days 365<\/code>: Bu bayrak, olu\u015fturulacak sertifikan\u0131n ge\u00e7erlilik s\u00fcresini g\u00fcn cinsinden belirtir. Burada 365 g\u00fcn (1 y\u0131l) olarak ayarlanm\u0131\u015ft\u0131r. Bu s\u00fcrenin sonunda sertifikan\u0131z\u0131n s\u00fcresi dolar ve yenilemeniz gerekir.<br \/>\n*   <code>-newkey rsa:2048<\/code>: Bu bayrak, yeni bir \u00f6zel anahtar olu\u015fturulaca\u011f\u0131n\u0131 belirtir. <code>rsa:2048<\/code> ise anahtar\u0131n RSA algoritmas\u0131yla ve 2048 bit uzunlu\u011funda olaca\u011f\u0131n\u0131 ifade eder. 2048 bit, g\u00fcn\u00fcm\u00fcz standartlar\u0131nda iyi bir g\u00fcvenlik seviyesi sunar.<br \/>\n*   <code>-keyout \/etc\/ssl\/private\/apache-selfsigned.key<\/code>: Bu bayrak, olu\u015fturulacak \u00f6zel anahtar dosyas\u0131n\u0131n yolunu ve ad\u0131n\u0131 belirtir. Anahtar dosyas\u0131 <code>\/etc\/ssl\/private\/<\/code> dizinine <code>apache-selfsigned.key<\/code> ad\u0131yla kaydedilecektir.<br \/>\n*   <code>-out \/etc\/ssl\/certs\/apache-selfsigned.crt<\/code>: Bu bayrak, olu\u015fturulacak sertifika dosyas\u0131n\u0131n yolunu ve ad\u0131n\u0131 belirtir. Sertifika dosyas\u0131 <code>\/etc\/ssl\/certs\/<\/code> dizinine <code>apache-selfsigned.crt<\/code> ad\u0131yla kaydedilecektir.<\/p>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, OpenSSL size birka\u00e7 bilgi soracakt\u0131r. Bu bilgiler sertifikan\u0131z\u0131n ayr\u0131nt\u0131lar\u0131n\u0131 olu\u015fturur:<\/p>\n<pre><code class=\"language-\">You are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left blank.\n-----\nCountry Name (2 letter code) [AU]:TR\nState or Province Name (full name) [Some-State]:Istanbul\nLocality Name (eg, city) []:Istanbul\nOrganization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany\nOrganizational Unit Name (eg, section) []:IT\nCommon Name (e.g. server FQDN or YOUR name) []:your_domain_or_ip\nEmail Address []:admin@your_domain_or_ip<\/code><\/pre>\n<p>Burada dikkat etmeniz gereken en \u00f6nemli alan <strong>Common Name (e.g. server FQDN or YOUR name)<\/strong> alan\u0131d\u0131r. Bu alana, web sunucunuza eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z tam nitelikli alan ad\u0131n\u0131 (FQDN) veya IP adresini girmelisiniz. \u00d6rne\u011fin:<\/p>\n<p>*   E\u011fer sunucunuza <code>example.com<\/code> \u00fczerinden eri\u015fecekseniz, <code>example.com<\/code> yaz\u0131n.<br \/>\n*   E\u011fer sunucunuza <code>www.example.com<\/code> \u00fczerinden eri\u015fecekseniz, <code>www.example.com<\/code> yaz\u0131n.<br \/>\n*   E\u011fer sunucunuza yaln\u0131zca IP adresi (\u00f6rn. <code>192.168.1.100<\/code>) \u00fczerinden eri\u015fecekseniz, bu IP adresini yaz\u0131n.<br \/>\n*   E\u011fer yerel geli\u015ftirme i\u00e7in kullan\u0131yorsan\u0131z, <code>localhost<\/code> yazabilirsiniz.<\/p>\n<p>Bu alan\u0131n do\u011fru girilmesi, taray\u0131c\u0131n\u0131z\u0131n sertifikay\u0131 &#8220;ge\u00e7erli&#8221; olarak kabul etmesi (g\u00fcvenilir olmasa da) i\u00e7in \u00f6nemlidir. Yanl\u0131\u015f girilmesi durumunda taray\u0131c\u0131, sertifikan\u0131n alan ad\u0131yla e\u015fle\u015fmedi\u011fi konusunda ek bir uyar\u0131 g\u00f6sterecektir. Di\u011fer alanlar\u0131 istedi\u011finiz gibi doldurabilir veya varsay\u0131lan de\u011ferleri kabul edebilirsiniz.<\/p>\n<h3>Anahtar Dosyas\u0131 \u0130zinlerini Ayarlama<\/h3>\n<p>\u00d6zel anahtar dosyan\u0131z (private key), sunucunuzun g\u00fcvenli\u011fi i\u00e7in kritik \u00f6neme sahiptir. Bu dosyan\u0131n yaln\u0131zca root kullan\u0131c\u0131s\u0131 taraf\u0131ndan okunabilir olmas\u0131 gerekir. Apache&#8217;nin de bu dosyay\u0131 okuyabilmesi i\u00e7in gerekli izinlere sahip olmas\u0131 sa\u011flanmal\u0131d\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki komutla \u00f6zel anahtar dosyas\u0131n\u0131n izinlerini ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chmod 600 \/etc\/ssl\/private\/apache-selfsigned.key<\/code><\/pre>\n<p>Bu komut, <code>\/etc\/ssl\/private\/apache-selfsigned.key<\/code> dosyas\u0131n\u0131n izinlerini <code>600<\/code> olarak ayarlar. Bu, dosyan\u0131n yaln\u0131zca sahibi (root) taraf\u0131ndan okunabilir ve yaz\u0131labilir oldu\u011fu, di\u011fer kullan\u0131c\u0131lar i\u00e7in ise hi\u00e7bir iznin olmad\u0131\u011f\u0131 anlam\u0131na gelir. Bu izinler, \u00f6zel anahtar\u0131n\u0131z\u0131n yetkisiz eri\u015fime kar\u015f\u0131 korunmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Ad\u0131m 4: Apache Sanal Host Dosyas\u0131n\u0131 Yap\u0131land\u0131rma<\/h2>\n<p>\u015eimdi olu\u015fturdu\u011fumuz kendi kendine imzalanm\u0131\u015f SSL sertifikas\u0131n\u0131 Apache&#8217;ye tan\u0131tmak i\u00e7in bir sanal host (virtual host) yap\u0131land\u0131rma dosyas\u0131 olu\u015fturaca\u011f\u0131z veya mevcut bir dosyay\u0131 d\u00fczenleyece\u011fiz.<\/p>\n<h3>Varsay\u0131lan SSL Yap\u0131land\u0131rmas\u0131n\u0131 Kopyalama<\/h3>\n<p>Apache, genellikle <code>default-ssl.conf<\/code> ad\u0131nda bir \u00f6rnek SSL sanal host yap\u0131land\u0131rma dosyas\u0131 ile birlikte gelir. Bu dosyay\u0131 kopyalayarak kendi yap\u0131land\u0131rmam\u0131z\u0131 olu\u015fturmak iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu \u015fekilde, varsay\u0131lan dosyay\u0131 de\u011fi\u015ftirmemi\u015f oluruz ve kendi ayarlar\u0131m\u0131z\u0131 ayr\u0131 bir dosyada tutar\u0131z.<\/p>\n<p>A\u015fa\u011f\u0131daki komutla varsay\u0131lan SSL yap\u0131land\u0131rma dosyas\u0131n\u0131 kopyalay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo cp \/etc\/apache2\/sites-available\/default-ssl.conf \/etc\/apache2\/sites-available\/000-default-ssl.conf<\/code><\/pre>\n<p>Burada <code>000-default-ssl.conf<\/code> ad\u0131n\u0131 kulland\u0131k. Dosya ad\u0131n\u0131n ba\u015f\u0131ndaki <code>000<\/code> rakam\u0131, Apache&#8217;nin bu yap\u0131land\u0131rma dosyas\u0131n\u0131 di\u011ferlerinden \u00f6nce y\u00fcklemesini sa\u011flar, bu da genellikle varsay\u0131lan bir site i\u00e7in iyi bir uygulamad\u0131r. Kendi alan ad\u0131n\u0131z i\u00e7in bir sanal host olu\u015fturuyorsan\u0131z, <code>your_domain.conf<\/code> gibi daha anlaml\u0131 bir isim kullanabilirsiniz.<\/p>\n<h3>Yeni Sanal Host Dosyas\u0131n\u0131 D\u00fczenleme<\/h3>\n<p>Kopyalad\u0131\u011f\u0131n\u0131z yeni sanal host dosyas\u0131n\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n. Bu \u00f6rnekte <code>nano<\/code> kullanaca\u011f\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/000-default-ssl.conf<\/code><\/pre>\n<p>Dosyay\u0131 a\u00e7t\u0131\u011f\u0131n\u0131zda, muhtemelen a\u015fa\u011f\u0131daki gibi bir yap\u0131 g\u00f6receksiniz:<\/p>\n<pre><code class=\"language-apache\"><IfModule mod_ssl.c>\n        <VirtualHost _default_:443>\n                ServerAdmin webmaster@localhost\n\n                DocumentRoot \/var\/www\/html\n\n                ErrorLog ${APACHE_LOG_DIR}\/error.log\n                CustomLog ${APACHE_LOG_DIR}\/access.log combined\n\n                SSLEngine on\n\n                SSLCertificateFile      \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem\n                SSLCertificateKeyFile \/etc\/ssl\/private\/ssl-cert-snakeoil.key\n\n                <FilesMatch \"\\.(cgi|shtml|phtml|php)$\">\n                                SSLOptions +StdEnvVars\n                <\/FilesMatch>\n                <Directory \/usr\/lib\/cgi-bin>\n                                SSLOptions +StdEnvVars\n                <\/Directory>\n\n        <\/VirtualHost>\n<\/IfModule><\/code><\/pre>\n<p>Bu dosya \u00fczerinde baz\u0131 de\u011fi\u015fiklikler yapmam\u0131z gerekiyor:<\/p>\n<p>1.  <strong><code>ServerAdmin<\/code>:<\/strong> Web y\u00f6neticisi e-posta adresini g\u00fcncelleyin.<br \/>\n2.  <strong><code>ServerName<\/code>:<\/strong> Bu direktif genellikle varsay\u0131lan dosyada yorum sat\u0131r\u0131 halindedir veya eksiktir. Kendi alan ad\u0131n\u0131z\u0131 veya IP adresinizi buraya eklemeniz \u00f6nemlidir. Bu de\u011fer, sertifika olu\u015ftururken girdi\u011finiz <strong>Common Name<\/strong> ile ayn\u0131 olmal\u0131d\u0131r.<br \/>\n3.  <strong><code>DocumentRoot<\/code>:<\/strong> Web sitenizin dosyalar\u0131n\u0131n bulundu\u011fu k\u00f6k dizini belirtir. Varsay\u0131lan olarak <code>\/var\/www\/html<\/code> olabilir. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re de\u011fi\u015ftirebilirsiniz.<br \/>\n4.  <strong><code>SSLCertificateFile<\/code>:<\/strong> Bu direktifi, olu\u015fturdu\u011funuz sertifika dosyas\u0131n\u0131n tam yolu ile g\u00fcncelleyin.<br \/>\n5.  <strong><code>SSLCertificateKeyFile<\/code>:<\/strong> Bu direktifi, olu\u015fturdu\u011funuz \u00f6zel anahtar dosyas\u0131n\u0131n tam yolu ile g\u00fcncelleyin.<\/p>\n<p>Yapaca\u011f\u0131m\u0131z de\u011fi\u015fiklikler sonucunda dosyan\u0131z\u0131n a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcnmesi gerekmektedir (kendi de\u011ferlerinizle g\u00fcncelleyin):<\/p>\n<pre><code class=\"language-apache\"><IfModule mod_ssl.c>\n        <VirtualHost _default_:443>\n                ServerAdmin admin@your_domain_or_ip.com\n                ServerName your_domain_or_ip:443\n                # ServerAlias www.your_domain_or_ip.com # \u0130ste\u011fe ba\u011fl\u0131 olarak di\u011fer alan adlar\u0131n\u0131 ekleyebilirsiniz\n\n                DocumentRoot \/var\/www\/html\n\n                ErrorLog ${APACHE_LOG_DIR}\/error.log\n                CustomLog ${APACHE_LOG_DIR}\/access.log combined\n\n                SSLEngine on\n\n                # Kendi olu\u015fturdu\u011fumuz sertifika ve anahtar dosyalar\u0131n\u0131 belirtiyoruz\n                SSLCertificateFile      \/etc\/ssl\/certs\/apache-selfsigned.crt\n                SSLCertificateKeyFile \/etc\/ssl\/private\/apache-selfsigned.key\n\n                # SSL\/TLS g\u00fcvenlik ayarlar\u0131 (iste\u011fe ba\u011fl\u0131, ancak \u00f6nerilir)\n                # Bu ayarlar, daha g\u00fcvenli \u015fifreleme algoritmalar\u0131n\u0131 ve protokollerini kullanmaya zorlar.\n                SSLProtocol             all -SSLv2 -SSLv3\n                SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA\n                SSLHonorCipherOrder     on\n                SSLCompression          off\n                SSLSessionCache         shmcb:\/var\/run\/apache2\/ssl_scache(512000)\n                SSLSessionCacheTimeout  300\n\n                # HSTS (HTTP Strict Transport Security) - Taray\u0131c\u0131lara sadece HTTPS kullanmas\u0131n\u0131 s\u00f6yler\n                # Header always set Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\" env=HTTPS\n\n                <FilesMatch \"\\.(cgi|shtml|phtml|php)$\">\n                                SSLOptions +StdEnvVars\n                <\/FilesMatch>\n                <Directory \/usr\/lib\/cgi-bin>\n                                SSLOptions +StdEnvVars\n                <\/Directory>\n\n        <\/VirtualHost>\n<\/IfModule><\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte <code>SSLProtocol<\/code>, <code>SSLCipherSuite<\/code>, <code>SSLHonorCipherOrder<\/code>, <code>SSLCompression<\/code>, <code>SSLSessionCache<\/code> ve <code>SSLSessionCacheTimeout<\/code> gibi ek g\u00fcvenlik ayarlar\u0131 da eklenmi\u015ftir. Bu ayarlar, daha modern ve g\u00fcvenli \u015fifreleme protokollerini ve algoritmalar\u0131n\u0131 kullanmaya zorlayarak sunucunuzun g\u00fcvenli\u011fini art\u0131r\u0131r. Kendi kendine imzalanm\u0131\u015f sertifika i\u00e7in bu ayarlar zorunlu de\u011fildir ancak genel g\u00fcvenlik pratikleri a\u00e7\u0131s\u0131ndan \u00f6nerilir.<\/p>\n<p>Dosyay\u0131 kaydedip kapat\u0131n (nano i\u00e7in <code>Ctrl+O<\/code>, <code>Enter<\/code>, <code>Ctrl+X<\/code>).<\/p>\n<h2>Ad\u0131m 5: Sanal Host Dosyas\u0131n\u0131 Etkinle\u015ftirme ve Apache&#8217;yi Yeniden Ba\u015flatma<\/h2>\n<p>Yeni yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131z sanal host dosyas\u0131n\u0131 Apache&#8217;nin etkinle\u015ftirmesi i\u00e7in bir komut \u00e7al\u0131\u015ft\u0131rman\u0131z gerekmektedir.<\/p>\n<p>Sanal host dosyas\u0131n\u0131 etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo a2ensite 000-default-ssl.conf<\/code><\/pre>\n<p><code>a2ensite<\/code> (Apache 2 Enable Site) komutu, belirtilen sanal host yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirir. Bu komut, <code>sites-available<\/code> dizinindeki yap\u0131land\u0131rma dosyas\u0131na <code>sites-enabled<\/code> dizininden bir sembolik ba\u011flant\u0131 olu\u015fturur.<\/p>\n<p>De\u011fi\u015fiklikleri uygulamadan \u00f6nce, Apache yap\u0131land\u0131rma dosyalar\u0131n\u0131zda herhangi bir s\u00f6zdizimi hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek iyi bir fikirdir:<\/p>\n<pre><code class=\"language-bash\">sudo apache2ctl configtest<\/code><\/pre>\n<p>E\u011fer her \u015fey yolundaysa, \u00e7\u0131kt\u0131 olarak <code>Syntax OK<\/code> g\u00f6rmelisiniz. Herhangi bir hata varsa, hatan\u0131n belirtildi\u011fi dosyay\u0131 kontrol edip d\u00fczeltmeniz gerekir.<\/p>\n<p>Yap\u0131land\u0131rma testi ba\u015far\u0131l\u0131 olduktan sonra, Apache web sunucusunu yeniden ba\u015flatarak de\u011fi\u015fikliklerin etkinle\u015fmesini sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2<\/code><\/pre>\n<p>Apache yeniden ba\u015flat\u0131ld\u0131ktan sonra, sunucunuz art\u0131k HTTPS ba\u011flant\u0131lar\u0131n\u0131 kabul etmeye haz\u0131r olmal\u0131d\u0131r.<\/p>\n<h2>Ad\u0131m 6: G\u00fcvenlik Duvar\u0131n\u0131 Ayarlama (Opsiyonel)<\/h2>\n<p>E\u011fer sunucunuzda UFW (Uncomplicated Firewall) gibi bir g\u00fcvenlik duvar\u0131 etkinse, HTTPS trafi\u011fine (port 443) izin vermeniz gerekmektedir. Aksi takdirde, web sitenize d\u0131\u015far\u0131dan eri\u015fim sa\u011flanamaz.<\/p>\n<p>UFW&#8217;nin durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>E\u011fer UFW etkinse ve HTTPS trafi\u011fine izin vermiyorsa, a\u015fa\u011f\u0131daki komutla <code>Apache Full<\/code> profilini etkinle\u015ftirin. Bu profil hem HTTP (port 80) hem de HTTPS (port 443) trafi\u011fine izin verir:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Apache Full'<\/code><\/pre>\n<p>E\u011fer sadece HTTPS trafi\u011fine izin vermek istiyorsan\u0131z, <code>Apache Secure<\/code> profilini kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Apache Secure'<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri uygulad\u0131ktan sonra UFW durumunu tekrar kontrol ederek port 443&#8217;\u00fcn a\u00e7\u0131k oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>443\/tcp (Apache Full)<\/code> veya benzer bir kural g\u00f6rmelisiniz.<\/p>\n<h2>Test Etme<\/h2>\n<p>T\u00fcm yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 tamamlad\u0131ktan sonra, web taray\u0131c\u0131n\u0131z\u0131 kullanarak kendi kendine imzalanm\u0131\u015f SSL sertifikan\u0131z\u0131 test edebilirsiniz.<\/p>\n<p>Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve adres \u00e7ubu\u011funa <code>https:\/\/your_domain_or_ip<\/code> adresini girin (burada <code>your_domain_or_ip<\/code>, sertifika olu\u015ftururken Common Name olarak girdi\u011finiz de\u011ferdir).<\/p>\n<p>Beklenen sonu\u00e7, taray\u0131c\u0131n\u0131z\u0131n size bir g\u00fcvenlik uyar\u0131s\u0131 g\u00f6stermesidir. Bu uyar\u0131, taray\u0131c\u0131n\u0131n sertifikay\u0131 imzalayan kurulu\u015fa g\u00fcvenmedi\u011fini belirtir. Uyar\u0131 mesaj\u0131 taray\u0131c\u0131ya g\u00f6re de\u011fi\u015fiklik g\u00f6sterebilir, ancak genellikle a\u015fa\u011f\u0131daki gibi ifadeler i\u00e7erir:<\/p>\n<p>*   &#8220;Ba\u011flant\u0131n\u0131z \u00f6zel de\u011fil.&#8221; (Google Chrome)<br \/>\n*   &#8220;G\u00fcvenli olmayan bir ba\u011flant\u0131 riski var.&#8221; (Mozilla Firefox)<br \/>\n*   &#8220;Bu ba\u011flant\u0131 \u00f6zel de\u011fil.&#8221; (Microsoft Edge)<br \/>\n*   &#8220;NET::ERR_CERT_AUTHORITY_INVALID&#8221; veya &#8220;SEC_ERROR_UNKNOWN_ISSUER&#8221; gibi hata kodlar\u0131.<\/p>\n<p>Bu uyar\u0131 tamamen normaldir ve kendi kendine imzalanm\u0131\u015f bir sertifika kullanman\u0131z\u0131n beklenen sonucudur. Taray\u0131c\u0131lar, sertifikay\u0131 bilinen ve g\u00fcvenilir bir Sertifika Yetkilisi taraf\u0131ndan imzalanmad\u0131\u011f\u0131 i\u00e7in do\u011frulayamaz.<\/p>\n<p>Bu uyar\u0131y\u0131 atlamak ve web sitenize eri\u015fmek i\u00e7in genellikle &#8220;Geli\u015fmi\u015f&#8221; (Advanced) veya &#8220;Daha Fazla Bilgi&#8221; (More Information) gibi bir se\u00e7ene\u011fe t\u0131klaman\u0131z ve ard\u0131ndan &#8220;your_domain_or_ip adresine ilerle (g\u00fcvenli de\u011fil)&#8221; veya benzeri bir se\u00e7ene\u011fi se\u00e7meniz gerekir.<\/p>\n<p>Web sitesine eri\u015ftikten sonra, taray\u0131c\u0131n\u0131z\u0131n adres \u00e7ubu\u011fundaki kilit simgesine t\u0131klayarak sertifika ayr\u0131nt\u0131lar\u0131n\u0131 inceleyebilirsiniz. Burada, sertifikan\u0131n Common Name&#8217;inin do\u011fru oldu\u011fundan, ge\u00e7erlilik s\u00fcresinin devam etti\u011finden ve sertifikay\u0131 imzalayan\u0131n siz oldu\u011funuzu g\u00f6receksiniz. Bu, sertifikan\u0131z\u0131n do\u011fru bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frular.<\/p>\n<h2>Geli\u015fmi\u015f Yap\u0131land\u0131rma ve G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h2>\n<p>Kendi kendine imzalanm\u0131\u015f bir sertifika genellikle test ve geli\u015ftirme ama\u00e7l\u0131 olsa da, Apache SSL yap\u0131land\u0131rmas\u0131n\u0131 daha g\u00fcvenli hale getirmek i\u00e7in baz\u0131 geli\u015fmi\u015f ayarlar\u0131 bilmek faydal\u0131d\u0131r. Yukar\u0131daki sanal host yap\u0131land\u0131rmas\u0131nda baz\u0131lar\u0131 zaten belirtilmi\u015fti:<\/p>\n<p>*   <strong><code>SSLProtocol<\/code><\/strong>: Desteklenen SSL\/TLS protokollerini belirler. Eski ve g\u00fcvensiz protokolleri (SSLv2, SSLv3) devre d\u0131\u015f\u0131 b\u0131rakmak \u00f6nemlidir. \u00d6rne\u011fin: <code>SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1<\/code> (Sadece TLSv1.2 ve sonras\u0131).<br \/>\n*   <strong><code>SSLCipherSuite<\/code><\/strong>: Kullan\u0131lacak \u015fifreleme algoritmalar\u0131n\u0131 (cipher suites) belirler. G\u00fc\u00e7l\u00fc ve modern \u015fifrelemeleri tercih etmek, zay\u0131f \u015fifrelemeleri devre d\u0131\u015f\u0131 b\u0131rakmak \u00f6nemlidir. Mozilla SSL Configuration Generator gibi ara\u00e7lar, g\u00fcncel ve g\u00fcvenli \u015fifreleme listeleri sunar.<br \/>\n*   <strong><code>SSLHonorCipherOrder on<\/code><\/strong>: Bu direktif, sunucunun kendi \u015fifreleme listesindeki s\u0131ralamay\u0131 istemcinin tercihine g\u00f6re de\u011fil, kendi tercihine g\u00f6re kullanmas\u0131n\u0131 sa\u011flar. Bu sayede sunucu, her zaman en g\u00fc\u00e7l\u00fc \u015fifrelemeyi kullanmaya \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong><code>SSLCompression off<\/code><\/strong>: CRIME sald\u0131r\u0131lar\u0131na kar\u015f\u0131 koruma sa\u011flamak i\u00e7in SSL s\u0131k\u0131\u015ft\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak \u00f6nerilir.<br \/>\n*   <strong><code>Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\"<\/code> (HSTS):<\/strong> HTTP Strict Transport Security (HSTS) ba\u015fl\u0131\u011f\u0131, taray\u0131c\u0131lara sitenize yaln\u0131zca HTTPS \u00fczerinden eri\u015fmeleri gerekti\u011fini bildirir. Bu, kullan\u0131c\u0131lar\u0131n yanl\u0131\u015fl\u0131kla HTTP \u00fczerinden eri\u015fmesini ve potansiyel olarak g\u00fcvensiz ba\u011flant\u0131lara y\u00f6nlendirilmesini engeller. Bu ba\u015fl\u0131\u011f\u0131 ekledi\u011finizde, taray\u0131c\u0131 belirli bir s\u00fcre boyunca (max-age) sitenize yaln\u0131zca HTTPS ile ba\u011flanacakt\u0131r. Bu genellikle \u00fcretim siteleri i\u00e7in \u00f6nerilir. Kendi kendine imzalanm\u0131\u015f bir sertifika ile kullan\u0131rken dikkatli olun, \u00e7\u00fcnk\u00fc taray\u0131c\u0131lar HSTS politikalar\u0131n\u0131 \u00f6nbelle\u011fe al\u0131r ve sertifika s\u00fcresi doldu\u011funda sorun ya\u015fayabilirsiniz.<\/p>\n<p><strong>Sertifika Yenileme:<\/strong> Kendi kendine imzalanm\u0131\u015f sertifikan\u0131z\u0131n s\u00fcresi doldu\u011funda (bizim \u00f6rne\u011fimizde 365 g\u00fcn sonra), taray\u0131c\u0131lar daha da kat\u0131 uyar\u0131lar g\u00f6sterecektir. Sertifikay\u0131 yenilemek i\u00e7in, yukar\u0131daki &#8220;OpenSSL Kullanarak Sertifika ve Anahtar Olu\u015fturma&#8221; ad\u0131m\u0131n\u0131 tekrar \u00e7al\u0131\u015ft\u0131rman\u0131z ve ard\u0131ndan Apache&#8217;yi yeniden ba\u015flatman\u0131z yeterlidir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu rehberde, Ubuntu 20.04 \u00fczerinde Apache web sunucunuz i\u00e7in kendi kendine imzalanm\u0131\u015f bir SSL sertifikas\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. <code>mod_ssl<\/code> mod\u00fcl\u00fcn\u00fc etkinle\u015ftirmekten, OpenSSL kullanarak sertifika ve \u00f6zel anahtar dosyalar\u0131n\u0131 olu\u015fturmaya, Apache sanal host yap\u0131land\u0131rmas\u0131n\u0131 d\u00fczenlemeye ve g\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131 yapmaya kadar t\u00fcm s\u00fcre\u00e7leri detayl\u0131 bir \u015fekilde ele ald\u0131k.<\/p>\n<p>Kendi kendine imzalanm\u0131\u015f SSL sertifikalar\u0131, \u00f6zellikle geli\u015ftirme, test ve dahili a\u011f ortamlar\u0131nda HTTPS ba\u011flant\u0131lar\u0131n\u0131 h\u0131zl\u0131 ve maliyetsiz bir \u015fekilde etkinle\u015ftirmek i\u00e7in son derece kullan\u0131\u015fl\u0131d\u0131r. Bu sertifikalar, ileti\u015fim g\u00fcvenli\u011fini \u015fifreleme yoluyla sa\u011flarken, herhangi bir \u00fc\u00e7\u00fcnc\u00fc taraf Sertifika Yetkilisi&#8217;ne ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<p>Ancak, kendi kendine imzalanm\u0131\u015f sertifikalar\u0131n temel s\u0131n\u0131rlamas\u0131n\u0131 unutmamak \u00f6nemlidir: taray\u0131c\u0131lar taraf\u0131ndan g\u00fcvenilir kabul edilmezler ve kullan\u0131c\u0131ya g\u00fcvenlik uyar\u0131lar\u0131 g\u00f6sterirler. Bu nedenle, genel kullan\u0131ma a\u00e7\u0131k veya ticari ama\u00e7l\u0131 \u00fcretim web siteleri i\u00e7in her zaman Let&#8217;s Encrypt gibi \u00fccretsiz veya \u00fccretli bir Sertifika Yetkilisi&#8217;nden al\u0131nm\u0131\u015f, g\u00fcvenilir bir SSL sertifikas\u0131 kullanman\u0131z \u015fiddetle tavsiye edilir.<\/p>\n<p>Bu rehber sayesinde, Apache ve SSL\/TLS hakk\u0131nda temel bir anlay\u0131\u015f kazanm\u0131\u015f ve sunucunuzun g\u00fcvenli\u011fini art\u0131rma yolunda \u00f6nemli bir ad\u0131m atm\u0131\u015f oldunuz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz internet d\u00fcnya","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-39469","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>Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi - 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\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi Giri\u015f G\u00fcn\u00fcm\u00fcz internet d\u00fcnya\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-22T02:40:44+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi\",\"datePublished\":\"2026-02-22T02:40:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\"},\"wordCount\":3014,\"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\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\",\"name\":\"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-22T02:40:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi\"}]},{\"@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":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi - 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\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi","og_description":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi Giri\u015f G\u00fcn\u00fcm\u00fcz internet d\u00fcnya","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-22T02:40:44+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi","datePublished":"2026-02-22T02:40:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/"},"wordCount":3014,"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\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/","name":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-22T02:40:44+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerinde-apache-icin-kendi-kendine-imzalanmis-self-signed-ssl-sertifikasi-olusturma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 20.04 \u00dczerinde Apache \u0130\u00e7in Kendi Kendine \u0130mzalanm\u0131\u015f (Self-Signed) SSL Sertifikas\u0131 Olu\u015fturma Rehberi"}]},{"@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\/39469","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=39469"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39469\/revisions"}],"predecessor-version":[{"id":39470,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39469\/revisions\/39470"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}