Takip et

Ubuntu 20.04 Üzerinde Apache İçin Kendi Kendine İmzalanmış (Self-Signed) SSL Sertifikası Oluşturma Rehberi

Ubuntu 20.04 Üzerinde Apache İçin Kendi Kendine İmzalanmış (Self-Signed) SSL Sertifikası Oluşturma Rehberi Giriş Günümüz internet dünya

Ubuntu 20.04 Üzerinde Apache İçin Kendi Kendine İmzalanmış (Self-Signed) SSL Sertifikası Oluşturma Rehberi

Giriş

Günümüz internet dünyasında güvenlik, hem kullanıcılar hem de web yöneticileri için en önemli önceliklerden biridir. Web siteniz ile kullanıcılarınız arasında gerçekleşen tüm veri alışverişinin şifrelenmesi, hassas bilgilerin (şifreler, kredi kartı bilgileri vb.) kötü niyetli kişiler tarafından ele geçirilmesini engellemek için hayati önem taşır. İşte bu noktada SSL/TLS (Secure Sockets Layer/Transport Layer Security) teknolojisi devreye girer. SSL/TLS, web sunucusu ile web tarayıcısı arasındaki iletişimi şifreleyerek verilerin güvenliğini sağlar ve aynı zamanda sunucunun kimliğini doğrular.

Bir SSL sertifikası, bir web sitesinin kimliğini doğrulayan ve şifreli bir bağlantı kurmayı sağlayan dijital bir dosyadır. Genellikle bu sertifikalar, güvenilir bir üçüncü taraf olan Sertifika Yetkilileri (Certificate Authority – CA) tarafından imzalanır. Ancak bazen, özellikle geliştirme ortamlarında, test sunucularında, dahili uygulamalarda veya kişisel projelerde, bir CA’dan sertifika almak pratik veya gerekli olmayabilir. Bu gibi durumlarda, “kendi kendine imzalanmış” (self-signed) bir SSL sertifikası oluşturmak iyi bir çözümdür.

Kendi kendine imzalanmış bir SSL sertifikası, adından da anlaşılacağı gibi, herhangi bir üçüncü taraf CA tarafından değil, doğrudan sizin tarafınızdan imzalanmıştır. Bu sertifikalar, tıpkı CA imzalı sertifikalar gibi iletişimi şifreler, ancak tarayıcılar tarafından otomatik olarak güvenilir kabul edilmezler. Çünkü tarayıcılar, sertifikayı imzalayan yetkilinin kendi güvenilir CA listesinde olmadığını görür ve kullanıcıya bir güvenlik uyarısı gösterir. Bu uyarı, sertifikanın doğrulanamadığını ve bağlantının potansiyel olarak güvensiz olabileceğini belirtir.

Bu kapsamlı rehberde, Ubuntu 20.04 işletim sistemi üzerinde çalışan Apache web sunucunuz için kendi kendine imzalanmış bir SSL sertifikasını adım adım nasıl oluşturacağınızı ve yapılandıracağınızı öğreneceksiniz. Bu adımları takip ederek, geliştirme ve test ortamlarınızda güvenli HTTPS bağlantılarını kolayca etkinleştirebileceksiniz.

Ön Koşullar

Bu rehberdeki adımları başarıyla uygulayabilmek için aşağıdaki ön koşullara sahip olmanız gerekmektedir:

* Ubuntu 20.04 Sunucusu: Ubuntu 20.04 (Focal Fossa) yüklü bir sunucuya sahip olmanız gerekmektedir.
* Root veya Sudo Erişimi: Sunucuda root kullanıcısı olarak veya sudo yetkilerine sahip bir kullanıcı olarak oturum açmış olmalısınız. Tüm komutlar sudo önekiyle çalıştırılacaktır.
* Apache Web Sunucusu: Sunucunuzda Apache web sunucusunun kurulu ve çalışır durumda olması gerekmektedir. Eğer Apache kurulu değilse, aşağıdaki komutlarla kurabilirsiniz:

sudo apt update
    sudo apt install apache2
    sudo systemctl start apache2
    sudo systemctl enable apache2

* Temel Komut Satırı Bilgisi: Linux komut satırı ve metin düzenleyici (nano, vim vb.) kullanımı hakkında temel bilgiye sahip olmanız faydalı olacaktır.
* Güvenlik Duvarı (Opsiyonel): Eğer sunucunuzda UFW gibi bir güvenlik duvarı etkinse, HTTPS trafiğine izin vermek için gerekli ayarlamaları yapmanız gerekebilir.

Adım 1: Apache’nin Güncel Olduğundan Emin Olma

Herhangi bir yazılım yapılandırmasına başlamadan önce, sisteminizin ve kurulu paketlerinizin güncel olduğundan emin olmak her zaman iyi bir uygulamadır. Bu, potansiyel güvenlik açıklarını kapatır ve en son kararlılık düzeltmelerini almanızı sağlar.

Terminalinizi açın ve aşağıdaki komutları çalıştırarak paket listenizi güncelleyin ve yüklü paketlerinizi yükseltin:

sudo apt update
sudo apt upgrade -y

sudo apt update komutu, yerel paket indeksinizi uzak depolardaki en son bilgilerle senkronize eder. Bu, hangi paketlerin güncellenebileceğini veya yeni paketlerin mevcut olup olmadığını öğrenmenizi sağlar. sudo apt upgrade -y komutu ise, indirilen paket indeksine göre güncellenebilecek tüm paketleri yükseltir. -y bayrağı, tüm onay istemlerine otomatik olarak “evet” yanıtı vermenizi sağlar, bu da yükseltme işlemini kesintisiz hale getirir.

Adım 2: SSL Modülünü Etkinleştirme

Apache’nin SSL/TLS bağlantılarını işleyebilmesi için mod_ssl modülünün etkinleştirilmesi gerekir. Bu modül, şifreleme ve sertifika yönetimi için gerekli olan tüm işlevleri sağlar.

SSL modülünü etkinleştirmek için aşağıdaki komutu kullanın:

sudo a2enmod ssl

a2enmod (Apache 2 Enable Module) komutu, belirtilen Apache modülünü etkinleştirir. Bu komut, modülün yapılandırma dosyasını mods-available dizininden mods-enabled dizinine bir sembolik bağlantı oluşturarak etkinleştirir.

Modülü etkinleştirdikten sonra, değişikliklerin Apache tarafından uygulanabilmesi için web sunucusunu yeniden başlatmanız gerekmektedir:

sudo systemctl restart apache2

Bu komut, Apache hizmetini durdurur ve ardından yeniden başlatır. Yeniden başlatma işlemi tamamlandığında, mod_ssl artık etkin ve SSL bağlantılarını kabul etmeye hazır olacaktır.

Adım 3: Kendi Kendine İmzalanmış SSL Sertifikası Oluşturma

Bu adımda, OpenSSL aracını kullanarak kendi kendine imzalanmış bir SSL sertifikası ve buna karşılık gelen özel anahtar dosyasını oluşturacağız.

Sertifika ve Anahtar Dosyaları İçin Dizin Oluşturma

Ubuntu’da SSL sertifikaları ve özel anahtarlar için standart dizinler sırasıyla /etc/ssl/certs ve /etc/ssl/private şeklindedir. Bu dizinler genellikle varsayılan olarak mevcuttur. Ancak, sertifikalarınızı daha düzenli tutmak veya Apache’ye özel sertifikaları ayrı bir yerde saklamak isterseniz, özel bir dizin de oluşturabilirsiniz. Bu rehberde, standart dizinleri kullanacağız ancak yine de bir kontrol yapabiliriz:

ls -ld /etc/ssl/certs /etc/ssl/private

Bu komut, belirtilen dizinlerin var olup olmadığını ve izinlerini gösterir. Eğer dizinler mevcut değilse (ki bu nadir bir durumdur), aşağıdaki gibi oluşturabilirsiniz:

sudo mkdir -p /etc/ssl/certs
sudo mkdir -p /etc/ssl/private

OpenSSL Kullanarak Sertifika ve Anahtar Oluşturma

Şimdi, OpenSSL komutunu kullanarak sertifika ve özel anahtar dosyasını oluşturacağız. Aşağıdaki komutu dikkatlice inceleyerek çalıştırın:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Bu komut oldukça güçlüdür ve birçok parametre içerir. Her bir parametrenin ne anlama geldiğini açıklayalım:

* openssl req: Bu, OpenSSL’in sertifika imzalama isteği (CSR) ve sertifika oluşturma işlevini çağırdığını belirtir.
* -x509: Bu bayrak, bir sertifika imzalama isteği (CSR) yerine doğrudan kendi kendine imzalanmış bir X.509 sertifikası oluşturulacağını belirtir.
* -nodes: Bu (no DES) bayrağı, özel anahtar dosyasının şifrelenmeyeceğini belirtir. Bu, Apache’nin her yeniden başlatıldığında bir parola sormasını engeller. Üretim ortamlarında genellikle anahtarı şifrelemek tercih edilir, ancak test ve geliştirme ortamları için parola istemi sıkıcı olabilir.
* -days 365: Bu bayrak, oluşturulacak sertifikanın geçerlilik süresini gün cinsinden belirtir. Burada 365 gün (1 yıl) olarak ayarlanmıştır. Bu sürenin sonunda sertifikanızın süresi dolar ve yenilemeniz gerekir.
* -newkey rsa:2048: Bu bayrak, yeni bir özel anahtar oluşturulacağını belirtir. rsa:2048 ise anahtarın RSA algoritmasıyla ve 2048 bit uzunluğunda olacağını ifade eder. 2048 bit, günümüz standartlarında iyi bir güvenlik seviyesi sunar.
* -keyout /etc/ssl/private/apache-selfsigned.key: Bu bayrak, oluşturulacak özel anahtar dosyasının yolunu ve adını belirtir. Anahtar dosyası /etc/ssl/private/ dizinine apache-selfsigned.key adıyla kaydedilecektir.
* -out /etc/ssl/certs/apache-selfsigned.crt: Bu bayrak, oluşturulacak sertifika dosyasının yolunu ve adını belirtir. Sertifika dosyası /etc/ssl/certs/ dizinine apache-selfsigned.crt adıyla kaydedilecektir.

Komutu çalıştırdığınızda, OpenSSL size birkaç bilgi soracaktır. Bu bilgiler sertifikanızın ayrıntılarını oluşturur:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:TR
State or Province Name (full name) [Some-State]:Istanbul
Locality Name (eg, city) []:Istanbul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:your_domain_or_ip
Email Address []:admin@your_domain_or_ip

Burada dikkat etmeniz gereken en önemli alan Common Name (e.g. server FQDN or YOUR name) alanıdır. Bu alana, web sunucunuza erişmek için kullanacağınız tam nitelikli alan adını (FQDN) veya IP adresini girmelisiniz. Örneğin:

* Eğer sunucunuza example.com üzerinden erişecekseniz, example.com yazın.
* Eğer sunucunuza www.example.com üzerinden erişecekseniz, www.example.com yazın.
* Eğer sunucunuza yalnızca IP adresi (örn. 192.168.1.100) üzerinden erişecekseniz, bu IP adresini yazın.
* Eğer yerel geliştirme için kullanıyorsanız, localhost yazabilirsiniz.

Bu alanın doğru girilmesi, tarayıcınızın sertifikayı “geçerli” olarak kabul etmesi (güvenilir olmasa da) için önemlidir. Yanlış girilmesi durumunda tarayıcı, sertifikanın alan adıyla eşleşmediği konusunda ek bir uyarı gösterecektir. Diğer alanları istediğiniz gibi doldurabilir veya varsayılan değerleri kabul edebilirsiniz.

Anahtar Dosyası İzinlerini Ayarlama

Özel anahtar dosyanız (private key), sunucunuzun güvenliği için kritik öneme sahiptir. Bu dosyanın yalnızca root kullanıcısı tarafından okunabilir olması gerekir. Apache’nin de bu dosyayı okuyabilmesi için gerekli izinlere sahip olması sağlanmalıdır.

Aşağıdaki komutla özel anahtar dosyasının izinlerini ayarlayın:

sudo chmod 600 /etc/ssl/private/apache-selfsigned.key

Bu komut, /etc/ssl/private/apache-selfsigned.key dosyasının izinlerini 600 olarak ayarlar. Bu, dosyanın yalnızca sahibi (root) tarafından okunabilir ve yazılabilir olduğu, diğer kullanıcılar için ise hiçbir iznin olmadığı anlamına gelir. Bu izinler, özel anahtarınızın yetkisiz erişime karşı korunmasını sağlar.

Adım 4: Apache Sanal Host Dosyasını Yapılandırma

Şimdi oluşturduğumuz kendi kendine imzalanmış SSL sertifikasını Apache’ye tanıtmak için bir sanal host (virtual host) yapılandırma dosyası oluşturacağız veya mevcut bir dosyayı düzenleyeceğiz.

Varsayılan SSL Yapılandırmasını Kopyalama

Apache, genellikle default-ssl.conf adında bir örnek SSL sanal host yapılandırma dosyası ile birlikte gelir. Bu dosyayı kopyalayarak kendi yapılandırmamızı oluşturmak iyi bir başlangıç noktasıdır. Bu şekilde, varsayılan dosyayı değiştirmemiş oluruz ve kendi ayarlarımızı ayrı bir dosyada tutarız.

Aşağıdaki komutla varsayılan SSL yapılandırma dosyasını kopyalayın:

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf

Burada 000-default-ssl.conf adını kullandık. Dosya adının başındaki 000 rakamı, Apache’nin bu yapılandırma dosyasını diğerlerinden önce yüklemesini sağlar, bu da genellikle varsayılan bir site için iyi bir uygulamadır. Kendi alan adınız için bir sanal host oluşturuyorsanız, your_domain.conf gibi daha anlamlı bir isim kullanabilirsiniz.

Yeni Sanal Host Dosyasını Düzenleme

Kopyaladığınız yeni sanal host dosyasını bir metin düzenleyici ile açın. Bu örnekte nano kullanacağız:

sudo nano /etc/apache2/sites-available/000-default-ssl.conf

Dosyayı açtığınızda, muhtemelen aşağıdaki gibi bir yapı göreceksiniz:


        
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

                
                                SSLOptions +StdEnvVars
                
                
                                SSLOptions +StdEnvVars
                

        

Bu dosya üzerinde bazı değişiklikler yapmamız gerekiyor:

1. ServerAdmin: Web yöneticisi e-posta adresini güncelleyin.
2. ServerName: Bu direktif genellikle varsayılan dosyada yorum satırı halindedir veya eksiktir. Kendi alan adınızı veya IP adresinizi buraya eklemeniz önemlidir. Bu değer, sertifika oluştururken girdiğiniz Common Name ile aynı olmalıdır.
3. DocumentRoot: Web sitenizin dosyalarının bulunduğu kök dizini belirtir. Varsayılan olarak /var/www/html olabilir. İhtiyaçlarınıza göre değiştirebilirsiniz.
4. SSLCertificateFile: Bu direktifi, oluşturduğunuz sertifika dosyasının tam yolu ile güncelleyin.
5. SSLCertificateKeyFile: Bu direktifi, oluşturduğunuz özel anahtar dosyasının tam yolu ile güncelleyin.

Yapacağımız değişiklikler sonucunda dosyanızın aşağıdaki gibi görünmesi gerekmektedir (kendi değerlerinizle güncelleyin):


        
                ServerAdmin admin@your_domain_or_ip.com
                ServerName your_domain_or_ip:443
                # ServerAlias www.your_domain_or_ip.com # İsteğe bağlı olarak diğer alan adlarını ekleyebilirsiniz

                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                # Kendi oluşturduğumuz sertifika ve anahtar dosyalarını belirtiyoruz
                SSLCertificateFile      /etc/ssl/certs/apache-selfsigned.crt
                SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

                # SSL/TLS güvenlik ayarları (isteğe bağlı, ancak önerilir)
                # Bu ayarlar, daha güvenli şifreleme algoritmalarını ve protokollerini kullanmaya zorlar.
                SSLProtocol             all -SSLv2 -SSLv3
                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
                SSLHonorCipherOrder     on
                SSLCompression          off
                SSLSessionCache         shmcb:/var/run/apache2/ssl_scache(512000)
                SSLSessionCacheTimeout  300

                # HSTS (HTTP Strict Transport Security) - Tarayıcılara sadece HTTPS kullanmasını söyler
                # Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" env=HTTPS

                
                                SSLOptions +StdEnvVars
                
                
                                SSLOptions +StdEnvVars
                

        

Yukarıdaki örnekte SSLProtocol, SSLCipherSuite, SSLHonorCipherOrder, SSLCompression, SSLSessionCache ve SSLSessionCacheTimeout gibi ek güvenlik ayarları da eklenmiştir. Bu ayarlar, daha modern ve güvenli şifreleme protokollerini ve algoritmalarını kullanmaya zorlayarak sunucunuzun güvenliğini artırır. Kendi kendine imzalanmış sertifika için bu ayarlar zorunlu değildir ancak genel güvenlik pratikleri açısından önerilir.

Dosyayı kaydedip kapatın (nano için Ctrl+O, Enter, Ctrl+X).

Adım 5: Sanal Host Dosyasını Etkinleştirme ve Apache’yi Yeniden Başlatma

Yeni yapılandırdığınız sanal host dosyasını Apache’nin etkinleştirmesi için bir komut çalıştırmanız gerekmektedir.

Sanal host dosyasını etkinleştirin:

sudo a2ensite 000-default-ssl.conf

a2ensite (Apache 2 Enable Site) komutu, belirtilen sanal host yapılandırma dosyasını etkinleştirir. Bu komut, sites-available dizinindeki yapılandırma dosyasına sites-enabled dizininden bir sembolik bağlantı oluşturur.

Değişiklikleri uygulamadan önce, Apache yapılandırma dosyalarınızda herhangi bir sözdizimi hatası olup olmadığını kontrol etmek iyi bir fikirdir:

sudo apache2ctl configtest

Eğer her şey yolundaysa, çıktı olarak Syntax OK görmelisiniz. Herhangi bir hata varsa, hatanın belirtildiği dosyayı kontrol edip düzeltmeniz gerekir.

Yapılandırma testi başarılı olduktan sonra, Apache web sunucusunu yeniden başlatarak değişikliklerin etkinleşmesini sağlayın:

sudo systemctl restart apache2

Apache yeniden başlatıldıktan sonra, sunucunuz artık HTTPS bağlantılarını kabul etmeye hazır olmalıdır.

Adım 6: Güvenlik Duvarını Ayarlama (Opsiyonel)

Eğer sunucunuzda UFW (Uncomplicated Firewall) gibi bir güvenlik duvarı etkinse, HTTPS trafiğine (port 443) izin vermeniz gerekmektedir. Aksi takdirde, web sitenize dışarıdan erişim sağlanamaz.

UFW’nin durumunu kontrol etmek için:

sudo ufw status

Eğer UFW etkinse ve HTTPS trafiğine izin vermiyorsa, aşağıdaki komutla Apache Full profilini etkinleştirin. Bu profil hem HTTP (port 80) hem de HTTPS (port 443) trafiğine izin verir:

sudo ufw allow 'Apache Full'

Eğer sadece HTTPS trafiğine izin vermek istiyorsanız, Apache Secure profilini kullanabilirsiniz:

sudo ufw allow 'Apache Secure'

Değişiklikleri uyguladıktan sonra UFW durumunu tekrar kontrol ederek port 443’ün açık olduğundan emin olun:

sudo ufw status

Çıktıda 443/tcp (Apache Full) veya benzer bir kural görmelisiniz.

Test Etme

Tüm yapılandırma adımlarını tamamladıktan sonra, web tarayıcınızı kullanarak kendi kendine imzalanmış SSL sertifikanızı test edebilirsiniz.

Web tarayıcınızı açın ve adres çubuğuna https://your_domain_or_ip adresini girin (burada your_domain_or_ip, sertifika oluştururken Common Name olarak girdiğiniz değerdir).

Beklenen sonuç, tarayıcınızın size bir güvenlik uyarısı göstermesidir. Bu uyarı, tarayıcının sertifikayı imzalayan kuruluşa güvenmediğini belirtir. Uyarı mesajı tarayıcıya göre değişiklik gösterebilir, ancak genellikle aşağıdaki gibi ifadeler içerir:

* “Bağlantınız özel değil.” (Google Chrome)
* “Güvenli olmayan bir bağlantı riski var.” (Mozilla Firefox)
* “Bu bağlantı özel değil.” (Microsoft Edge)
* “NET::ERR_CERT_AUTHORITY_INVALID” veya “SEC_ERROR_UNKNOWN_ISSUER” gibi hata kodları.

Bu uyarı tamamen normaldir ve kendi kendine imzalanmış bir sertifika kullanmanızın beklenen sonucudur. Tarayıcılar, sertifikayı bilinen ve güvenilir bir Sertifika Yetkilisi tarafından imzalanmadığı için doğrulayamaz.

Bu uyarıyı atlamak ve web sitenize erişmek için genellikle “Gelişmiş” (Advanced) veya “Daha Fazla Bilgi” (More Information) gibi bir seçeneğe tıklamanız ve ardından “your_domain_or_ip adresine ilerle (güvenli değil)” veya benzeri bir seçeneği seçmeniz gerekir.

Web sitesine eriştikten sonra, tarayıcınızın adres çubuğundaki kilit simgesine tıklayarak sertifika ayrıntılarını inceleyebilirsiniz. Burada, sertifikanın Common Name’inin doğru olduğundan, geçerlilik süresinin devam ettiğinden ve sertifikayı imzalayanın siz olduğunuzu göreceksiniz. Bu, sertifikanızın doğru bir şekilde çalıştığını doğrular.

Gelişmiş Yapılandırma ve Güvenlik İpuçları

Kendi kendine imzalanmış bir sertifika genellikle test ve geliştirme amaçlı olsa da, Apache SSL yapılandırmasını daha güvenli hale getirmek için bazı gelişmiş ayarları bilmek faydalıdır. Yukarıdaki sanal host yapılandırmasında bazıları zaten belirtilmişti:

* SSLProtocol: Desteklenen SSL/TLS protokollerini belirler. Eski ve güvensiz protokolleri (SSLv2, SSLv3) devre dışı bırakmak önemlidir. Örneğin: SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 (Sadece TLSv1.2 ve sonrası).
* SSLCipherSuite: Kullanılacak şifreleme algoritmalarını (cipher suites) belirler. Güçlü ve modern şifrelemeleri tercih etmek, zayıf şifrelemeleri devre dışı bırakmak önemlidir. Mozilla SSL Configuration Generator gibi araçlar, güncel ve güvenli şifreleme listeleri sunar.
* SSLHonorCipherOrder on: Bu direktif, sunucunun kendi şifreleme listesindeki sıralamayı istemcinin tercihine göre değil, kendi tercihine göre kullanmasını sağlar. Bu sayede sunucu, her zaman en güçlü şifrelemeyi kullanmaya çalışır.
* SSLCompression off: CRIME saldırılarına karşı koruma sağlamak için SSL sıkıştırmasını devre dışı bırakmak önerilir.
* Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" (HSTS): HTTP Strict Transport Security (HSTS) başlığı, tarayıcılara sitenize yalnızca HTTPS üzerinden erişmeleri gerektiğini bildirir. Bu, kullanıcıların yanlışlıkla HTTP üzerinden erişmesini ve potansiyel olarak güvensiz bağlantılara yönlendirilmesini engeller. Bu başlığı eklediğinizde, tarayıcı belirli bir süre boyunca (max-age) sitenize yalnızca HTTPS ile bağlanacaktır. Bu genellikle üretim siteleri için önerilir. Kendi kendine imzalanmış bir sertifika ile kullanırken dikkatli olun, çünkü tarayıcılar HSTS politikalarını önbelleğe alır ve sertifika süresi dolduğunda sorun yaşayabilirsiniz.

Sertifika Yenileme: Kendi kendine imzalanmış sertifikanızın süresi dolduğunda (bizim örneğimizde 365 gün sonra), tarayıcılar daha da katı uyarılar gösterecektir. Sertifikayı yenilemek için, yukarıdaki “OpenSSL Kullanarak Sertifika ve Anahtar Oluşturma” adımını tekrar çalıştırmanız ve ardından Apache’yi yeniden başlatmanız yeterlidir.

Sonuç

Bu rehberde, Ubuntu 20.04 üzerinde Apache web sunucunuz için kendi kendine imzalanmış bir SSL sertifikasını adım adım nasıl oluşturacağınızı ve yapılandıracağınızı öğrendiniz. mod_ssl modülünü etkinleştirmekten, OpenSSL kullanarak sertifika ve özel anahtar dosyalarını oluşturmaya, Apache sanal host yapılandırmasını düzenlemeye ve güvenlik duvarı ayarlarını yapmaya kadar tüm süreçleri detaylı bir şekilde ele aldık.

Kendi kendine imzalanmış SSL sertifikaları, özellikle geliştirme, test ve dahili ağ ortamlarında HTTPS bağlantılarını hızlı ve maliyetsiz bir şekilde etkinleştirmek için son derece kullanışlıdır. Bu sertifikalar, iletişim güvenliğini şifreleme yoluyla sağlarken, herhangi bir üçüncü taraf Sertifika Yetkilisi’ne bağımlılığı ortadan kaldırır.

Ancak, kendi kendine imzalanmış sertifikaların temel sınırlamasını unutmamak önemlidir: tarayıcılar tarafından güvenilir kabul edilmezler ve kullanıcıya güvenlik uyarıları gösterirler. Bu nedenle, genel kullanıma açık veya ticari amaçlı üretim web siteleri için her zaman Let’s Encrypt gibi ücretsiz veya ücretli bir Sertifika Yetkilisi’nden alınmış, güvenilir bir SSL sertifikası kullanmanız şiddetle tavsiye edilir.

Bu rehber sayesinde, Apache ve SSL/TLS hakkında temel bir anlayış kazanmış ve sunucunuzun güvenliğini artırma yolunda önemli bir adım atmış oldunuz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.