Bu yazımızda, Ubuntu / Apache web sunucularımızın, güvenli HTTPS protokolü ile iletişimini sağlamak üzere ücretsiz SSL sertifikası kurulması için yapılması gereken işlemleri adım adım ele alacağız.

SSL Nedir?

Kayıt yaptırmak, soru sormak, kullanıcı girişi yapmak gibi pek çok işlem için web formları sıklıkla kullanılır. Fakat web tarayıcınız (Chrome, Firefox, Safari vs.) ile site arasında güvenli iletişim sağlanmadıkça, gönderip aldığınız her veri 3. kişilerce okunabilecektir. Yani gönderip almakta olduğunuz veriler eğer gizli nitelik taşıyorsa, başkaları bu bilgileri ele geçirebilecektir. SSL (Secure Socket Layer) protokolü, işte bu iletişimi karşılıklı olarak şifreleyerek temel iletişim güvenliğini sağlamaktadır. Bu yazımızda Ubuntu web sunucunuzda SSL kurulumu, sertifikaların hazırlanması ve Apache konfigürasyonu anlatılacaktır.

Gereksinimler :

  • Ubuntu 20.04 LTS
    Burada anlatılanlar Ubuntu 20.04 için yazılmış olsa da 16.04 ve 18.04 sürümleri için de aynen uygulanabilmektedir.
  • Site yapılandırılması tamamlanmış Apache 2
  • SSH console bağlantısı
  • root ya da root yetkisinde bir kullanıcı

Adım 1 : root Yetkileri

Eğer SSH konsola root kullanıcısı haricinde bir kullanıcı ile bağlanmışsanız, öncelikle sudo -s komutu ile root yetkilerini almanız gerekiyor. Tabii ki kullanıcınıza bu yetkiler tanımlanmış olması gerek.

user@ubuntu:~$ sudo -s
[sudo] password for user:
root@ubuntu:/#

Adım 2 : cerbot Kurulumu

certbot kurulumu için öncelikle sistemimize repository ekleyeceğiz:

sudo add-apt-repository ppa:certbot/certbot

Onay için ENTER basın.

Sonrasında da certbot apache paketini kuruyoruz:

sudo apt install python-certbot-apache

Adım 3 : Firewall İzinleri

http requestlerinin varsayılan olarak 80 portunu kullandığı gibi https requestleri de default olarak 443 portunu kullanmaktadır. Bu nedenle eğer Ubuntu Firewall (ufw) kullanıyorsak bu port erişimi için izin verilmelidir.

ufw allow 443

Adım 4 : Domain Kontrolü

Sertifika kurma adımı öncesinde Apache üzerinde site kurulumlarının yapıldığını varsayıyorum. Yani http://www.alan_adiniz.com adresinin ulaşılabiliyor olması önemli. Bununla ilgili konfigürasyonu /etc/apache2/sites_available dizinindeki dosyalardan kontrol edebilirsiniz. Burada alan_adiniz.conf isminde bir dosya olmalı. Bu dosyayı favori editörünüz ile açtığınızda içinde ServerName ve ServerAlias satırlarında alan adlarınızı görüyor olmalısınız.  Ben genelde ServerName olarak yalnızca alan adını koyarken ServerAlias olarak www eklenmiş adresi belirliyorum.

# /etc/apache2/sites_available/alan_adiniz.conf

ServerName alan_adiniz.com
ServerAlias www.alan_adiniz.com

Burada yapacağınız değişikliklerden sonra apache servisini reload etmeyi unutmayın

systemctl reload apache2

Adım 4 : Sertifikaların Kurulması

Sıra geldi sertifikaların oluşturulması ve kurulması işlemine. Yukarıda da belirttiğim gibi bu işlem öncesinde sitemizin çalışır ve ulaşılabilir olması gerekiyor. Aşağıdaki komutta eğer aynı sertifikaya birden fazla alan eklenecekse her birisi için "-d alan_adi.com" ile ekleniyor.

sudo certbot --apache -d alan_adiniz.com -d www.alan_adiniz.com

Komutun çalıştırılmasının ardından certbot sertifikayı oluşturup erişimini denetler. Herşey yolunda ise size http taleplerinin otomatik https e yönlendirilmesini isteyip istemediğinizi sorar. Buna istediğiniz gibi cevap verebilirsiniz.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

certbot, seçiminize göre apache konfigürasyonunu otomatik olarak yapacaktır.

Sonuç

İşlemin tamamlanmasının ardından /etc/apache2/sites_available dizininde alanadiniz-le-ssl.conf isimli bir dosyanın eklendiğini göreceksiniz. https talepleri ile ilgili ilave konfigürasyon ihtiyaçlarınızda bu dosyayı düzenleyebilirsiniz.

Böylece hem ücretsiz hem de tarayıcılarda hata vermeyen Let's Encrypt SSL sertifikasını sistemimize tanımlamış olduk. Tarayıcınızın önbelleğini temizledikten sonra test edebilirsiniz.