İçerikler


    Nginx ve Ubuntu 16.04 için Ücretsiz SSL Dağıtıcısı Let's Encrypt Entegrasyonu

    04.09.2018 12:44

    Giriş

    Ücretsiz olarak TLS/SSL sertifikaları sağlayan Let’s Endcrypt sertifika otoritesi (CA) bir sivil toplum kuruluşu olan Internet Security Research Group (ISRG) tarafından tüm web sitelerini SSL ile güvenli bağlantıya kavuşturmak amacıyla kurulmuştur. Bağışlar ve destekleyen firmalar tarafından finanse edilen şirket 2015 yılından günümüze ücretsiz olarak SSL sertifikaları sağlamaktadır.

    SSL sertifikalarının otomatik olarak üretilmesi, kurulması ve yenilenmesi için iş süreçlerini basitleştirmek amacı ile Let’s Endcrypt yazılım istemcisi Certbot’u kullanarak Apache ve Nginx web servislerinde tüm SSL işlemleri tamamen otomasyona bağlanmıştır.

    Hazırladığımız bu dokümanımızda Ubuntu 16.04 versiyonu ve Nginx için ücretsiz bir SSL sertifikası almak amacıyla Certbot’u kullanacak ve sertifikalarınızın otomatik şekilde süresi dolduğunda yenilenmesini sağlayacak bir biçimde ayarlayacağız.

    Gereksinimler

    Bu dokümanı uygulamak için ihtiyaçlarınızın tam listesi;

    • Ubuntu 16.04 kurulu ve sudo root kullanıcı erişimi açık, güvenlik duvarı olan sunucuya sahip olmak.
    • Yönetimi sizde olan kayıtlı bir alan adına sahip olmak.
    • Sahip olduğunuz alan adının sunucunuza yönlendirilmiş olması.
    • Alan adı DNS A kaydının tam olarak ornekdomain.com şeklinde ve www.ornekdomain.com şeklinde sizin sunucunuza ait IP adresini çözümlemesi.

    Tüm adımları gerçekleştirmek için bu maddelere ihtiyacınız olacaktır.

    1. Adım - Certbot Kurulumu

    Let’s Encrypt ile ücretsiz SSL sertifikasına sahip olmanın ilk adımı Certbot yazılımını sunucunuza yüklemektir.

    Certbot çok sık yenilenen, güncellenen bir yazılımdır ve bundan dolayı sürekli güncel sürüme sahip olmak için Ubuntu tarafından sağlanan Certbot paketlerini kullanmanızı tavasiye ederiz. Paket yöneticisi ile yüklenen yazılımların güncellemesi çocuk oyuncağıdır. Certbot geliştiricileri en güncel sürümleri kendi Ubuntu yazılım güncelleme deposunda (reposunda) bulundurur.

    İlk işlem olarak bu repoyu sunucumuza ekleyelim

    sudo add-apt-repository ppa:certbot/certbot
    

    Komutu yazıp ENTER tuşladıktan sonra işletim sisteminizde repo güncellemesi başlatın.

    sudo apt-get update
    

    Son bir işlem olarak Nginx ve Certbot yazılımını yüklemek için alt kısımdaki komutu çalıştırın.

    sudo apt-get install python-certbot-nginx
    

    Certbot için yapmamız gereken başka bir işlem yok ancak Nginx için yapılandırma yapmamız gerekmektedir.

    2. Adım - Nginx Yapılandırması

    Certbot, Nginx için SSL kurulumunu otomatik olarak yapmakta ancak yapılandırma kontrolü için SSL kurulacak alan adını sunucuda çözümlemesi gerekmektedir. Sertifika isteğinde bulunduğunuzda alan adı doğrulama işlemi için mevcut alan adınızın bu sunucuda erişilebilir olması gerekmektedir.

    Yeni kurulan Nginx web sunucusunda varsayılan yapılandırma dosyasını düzenlemek sureti ile işlem yapabilirsiniz. Bunun için herhangi bir metin editörü ile varsayılan konfügurasyon dosyasını açın

    sudo nano /etc/nginx/sites-available/default
    

    Konfigurasyon dosyası yazım formatını bozkadan mevcut server_name alanı karşısına www ile başlayan ve bir boşluk bırakarak www olmadan alan adınızı yazınız.

    ###
    server_name www.ornekdomain.com ornekdomain.com
    ###
    

    Konfigurasyon dosyasını kaydedip çıktıktan sonra herhangi bir yazım yanlışı var mı, kontrol etmek için alt kısımdaki komutu çalıştırınız.

    sudo nginx -t
    

    Çalıştırdığınız bu komutun sonucunda herhangi bir hata alırsanız konfigürasyon dosyasını tekrar açıp yazım hatalarını düzeltiniz.

    Eğer yapılandırmanız doğru ise yeni konfigürasyon dosyası ile Nginx web sunucusunu çalıştırmak için alt kısımda yer alan komutu uygulayınız

    sudo systemctl reload nginx
    

    Tüm bu işlemlerin sonunda Certbot şimdi sunucuda SSL kurulumu başlatırken alan adınızı bulacak ve güncelleme yapabilecektir. Sonraki adımda HTTPS trafiğine izin vermek için güvenlik duvarımızda yapılacak güncellemeler anlatılacak.

    3. Adım - HTTPS Trafik İzni

    Eğer ufw güvenlik duvarını etkinleştirdiyseniz bu adımda HTTPS trafiğine izin vermek için hangi ayarları değiştirmeniz gerektiğini anlatacağız. Sunucunuzda ufw etkin değilse bu adımı atlayabilirsiniz. Nginx kurulduğunda kurulum esnasında ufw bir kaç profil oluşturur

    Şuan geçerli ayarları görmek için alt kısımdaki komutu çalıştırınız.

    sudo ufw status
    

    Eğer görünümü alt kısımdaki gibiyse sadece HTTP trafiğine izin verildiğini göreceksiniz.

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere                  
    Nginx HTTP                 ALLOW       Anywhere                  
    OpenSSH (v6)               ALLOW       Anywhere (v6)             
    Nginx HTTP (v6)            ALLOW       Anywhere (v6)
    

    Ek olarak HTTPS trafiğine de izin vermek için Nginx kurulumu ile gelen profile izin verebilir ve oluşturulmuş HTTP iznini de silebilirsiniz.

    sudo ufw allow 'Nginx Full'
    sudo ufw delete allow 'Nginx HTTP'
    

    Tüm işlemleri yaptığınızda şu status parametresi çıktısı şu kelilde olmalıdır.

    sudo ufw status
    
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    Nginx Full                 ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    Nginx Full (v6)            ALLOW       Anywhere (v6)
    

    Bu adımı da tamamladıktan sonra artık Certbot’u çalıştırmaya ve sertifika üretip, kurulumunu yaptırmaya hazırız.

    4. Adım - SSL Sertifikası Oluşturma

    Certbot, Nginx için eklentisi ile konfigürasyon dosyasını yapılandırılması ve gerektiğinde mevcut yapılandırılan konfigürasyonu yeniden oluşturmasını sağlamaktadır.

    sudo certbot --nginx -d www.ornekdomain.com -d ornekdomain.com
    

    Bu komut ile Certbot –nginx parametresi sayesinde Nginx eklentisi ile çalışmaktadır. Alan adlarını da -d parametresi ile belirleriz. Sertifikalar Certbot ile bu şekilde oluşturulur.

    Eğer ilk defa Certbot çalıştırıyorsanız sizden bir e-posta adresi girmenizi ve hizmet sözleşmesini kabul etmenizi isteyecektir. Bunu yaptıktan sonra Certbot, Let’s Encrypt sunucusu ile iletişim kurar, ardından sertifika isteğinde bulunduğunuz alan adlarını doğrulamak için sunucunuza istek gönderir.

    Tüm bu işlemler başarılı olursa Certbot HTTPS için Nginx ayarlarını nasıl yapılandırmak istediğinizi soracaktır.

    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):
    

    Bu ekranda seçiminizi yaparak ENTER tuşlamanız gerekir. Bununla birlikte Nginx için yeni konfigürasyon oluşturulur ve konfigürasyonun geçerli sayılabilmesi için Nginx baştan başlatılır. Son işlem olarak Certbot, tüm bu sürecin başarılı olduğunu ve sertifikalarınızın nerede saklandığını gösteren bir mesajla işlemi sonlandırır.

    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at
       /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
       expire on 2017-10-23. To obtain a new or tweaked version of this
       certificate in the future, simply run certbot again with the
       "certonly" option. To non-interactively renew *all* of your
       certificates, run "certbot renew"
     - Your account credentials have been saved in your Certbot
       configuration directory at /etc/letsencrypt. You should make a
       secure backup of this folder now. This configuration directory will
       also contain certificates and private keys obtained by Certbot so
       making regular backups of this folder is ideal.
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le
    

    Web sitenizi şimdi https:// kullanarak tekrar açmayı deneyiniz. Adres çubuğunda yeşil https:// ve Güvenli ibaresini görüyorsanız her şey yolunda demektir. Alan adınızı SSL Labs Server Testini kullanarak test ederseniz, A notu aldığınızı göreceksiniz.

    Son bir adım olarak SSL sertifikalarınızın otomatik yenilenmesi için

    5. Adım - Otomatik Sertifika Yenileme

    Let’s Encrypt sadece 90 günlük SSL sertifikası üretir. Buda kullanıcıların sertifika yenileme sürecini otomasyona bağlamaya teşvik eder. Kurduğumuz Certbot yazılımını bir zamanlanmış görev (cron) işlemi ile günde 2 defa olmak üzere yenileme parametresi ile çalıştırarak tüm süreci otomasyona bağlamak mümkündür. Biz otomatik kurulum yaptığımız için bu zamanlanmış görevler de otomatik olarak sistemimize eklenir ancak farklı bir işletim sistemi veya paket yöneticisi kullanmadan işlem yapıyorsanız /etc/cron.d dosyasına yerleştirilmiş bir bash script ile de bunu yapabilir veya crontab -e komutunu kullanabilirsiniz.

    Yenileme sürecini test etmek için Certbot ile SSL sertifikası alınmış sunucumuzda alt kısımda yer alan komutu çalıştırabilirsiniz.

    sudo certbot renew --dry-run
    

    Eğer bir hata görmüyorsanız bu komutu zamanlanmış görev (cron) içerisinde kullanabilirsiniz. Bu komut sertifikalarınızı yenileyecek ve değişiklikleri geçerli kılmak için Nginx web servisinizi de yeniden başlatacaktır. Eğer bu otomatik yenileme başarısız olursa Certbot’u ilk çalıştırdığınız esnada girdiğiniz e-posta adresine sertifikanızın geçerlilik süresi dolduğunda size e-posta gönderilecektir.

    Sonuç

    Bu dokümanımızda Let’s Encrypt tarafından ücretsiz olarak sağlanan SSL sertifikalarını Certbot yazılımı kullanarak üretmeyi, Nginx üzerine kurmayı ve Certbot ile sertifikalarımızı otomatik olarak yenilemeyi öğrendik. Tüm bu konular hakkında sormak istediğiniz sorularınızı yorum bölümünden bizlere iletebilirsiniz. Aynı şekilde dokümanı ilgilendiren konular ile ilgili Soru/Cevap sayfasında yeni soru oluşturabilirsiniz.

    Umarım doküman sizin için faydalı olmuştur. Mutlu günler dilerim.

    Yorumlar

    Buğra Ö. 05.11.2018 21:31
    Yararlı bir bilgi, teşekkürler.

    Yorum Ekleyin