Ubuntu 18.04, Apache Web Sunucusu üzerinde ücretsiz Let’s Encrypt SSL Yükleme

Encrypt, ücretsiz TLS / SSL sertifikaları sağlayan bir Sertifika Yetkilisidir. (CA). Bu kurulum için gerekli adımların çoğunu otomatikleştirmeye yarayan bir yazılım istemcisi olan Certbot’u kullanacağız.

Şu anda, SSL Seritifkası edinme ve yükleme sürecinin tamamı Apache ve Nginx üzerinde tamamen otomatik hale getirilmiştir.

Bu kurulumda varsayılan yapılandırma dosyası yerine ayrı bir Apache sanal ana bilgisayar dosyasını kullanacağız. Y

aygın hataları önlemek için her bir etki alanı için yeni Apache sanal ana bilgisayar dosyaları (.conf) oluşturmanızı öneririm.

Kurulum öncesi yapılması gerekenler

Öncelikle Ubuntu 18.04 sunucusu kurulu olmalıdır. Sudo haklarına sahip bir kullanıcı oluşturmayı unutmayın.

Kayıtlı bir alanadı Biz burada örnek vermek amacıyla www.websitem.com kullanacağız. Alanadınızın NameServer ayarlarını yapılandırmayı unutmayın. Sunucunuzun genel IP adresini işaret eden bir A kaydı Sunucunuzun genel IP adresini işaret eden CNAME kayıtlarıwww.websitem.com*.websitem.com Alan adınız için sanal ana makine dosyanız olduğundan emin olun. /etc/apache2/sites-available/websitem.com.conf

Certbot Kurulumu

Let’s Encrypt SSL Sertifikası kullanmanın ilk adımı, Certbot yazılımının sunucunuza yüklenmesidir.

Certbot çok aktif bir gelişme içerisindedir, dolayısıyla Ubuntu tarafından sağlanan Certbot paketleri esk, sürüm olabilir. Certbot geliştiricileri güncel sürümlere sahip bir Ubuntu yazılım deposu sunmaktadır. Certbot güncel paketini ekleyelim.


sudo add-apt-repository ppa:certbot/certbot

Şimdi paketi yükleyelim


sudo apt install python-certbot-apache

Certbot artık kullanıma hazır, ancak Apache için bazı yapılandırmaları doğrulamamız gerekiyor.

SSL Sertifikasını Kuralım

Certbot, SSL’yi otomatik olarak yapılandırmak için Apache konfigürasyonunuzda doğru sanal sunucuyu bulabilmelidir.

Bunu, sertifika isteğinde bulunduğunuz alanadıyla eşleşen bir yönerge ( ServerName ) arayarak yapar . etc/apache2/sites-enabled içinde alanınız için uygun şekilde ayarlanmış olan yönerge ile bir VirtualHost bloğuna sahip olmanız gerekir. ( websitem.com.conf )

Şayet yoksa default.conf dosyasını çoğaltın, adını websitem.com.conf olarak değiştirin ve aşağıda anlatacağım düzenlemeyi yapın. Şimdi alanadınızın sanal ana bilgisayar dosyasını nano veya diğer bir metin düzenleyicisi kullanarak açın:

sudo nano /etc/apache2/sites-available/example.com.conf

ServerName yönergesini bulun ve aşağıdaki gibi değiştirin. /etc/apache2/sites-available/websitem.com.conf


...
ServerName websitem.com;
ServerAlias www.websitem.com;
...

Dosyayı kaydedin (Ctrl+x, y, Enter) ve çıkın. Yaptığımız değişikliklerde bir hata olup olmadığını doğrulayalım.


sudo apache2ctl configtest

Hata almıyorsanız Certbot artık VirtualHost bloğunu bulabilir ve güncelleyebilir.

Şimdi, HTTPS trafiğine izin vermek için güvenlik duvarını güncelleyelim. Önce kontrol edelim, aşağıdaki komutu girin.


sudo ufw status

Aşağıdakine benzer bir çıktı almanız gerekir.


Output
Status: active

To                         Action      From

OpenSSH                    ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)

Ek olarak Apache Tam profiline izin verelim ve yedek Apache profilini silelim.


sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'

Güvenlik Duvarını tekrar kontrol edelim.


sudo ufw status

Aşağıdaki gibi bir çıktı almanız gerekir.


Output
Status: active

To                         Action      From

OpenSSH                    ALLOW       Anywhere                  
Apache Full                ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Apache Full (v6)           ALLOW       Anywhere (v6)    

Şimdi Cerboot’u çalıştırıp sertifikamızı yüklemeye başlayalım. SSL Sertifikasının Alınması Certbot eklentileri aracılığıyla SSL sertifikalarını yüklemek için çeşitli yollar sunar.

Apache eklentisi, Apache’yi yeniden yapılandırma ve gerektiğinde yapılandırmayı yeniden yükleme ile ilgilenir. Bu eklentiyi kullanmak için aşağıdaki komutu girin.


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

-d komutunu sertifikanın geçerli olmasını istediğiniz alanadlarını belirtmek için kullanıyoruz.

Cerbot ilk kez çalışıyorsa bir e-posta adresi girmeniz ve hizmet şartlarını kabul etmeniz istenecektir.

Bunu yaptıktan sonra certbot, Let’s Encrypt sunucusuyla iletişim kurar, ardından sertifika isteğinde bulunduğunuz alanı kontrol eder ve devam eder.

Bu başarılı olursa, certbot HTTPS ayarlarınızı nasıl yapılandırmak istediğinizi soracaktır.

Sitenize gelen isteklerin tümünü https’ye yönlendirilmesini zorunlu hale getirebilir (2) ya da http veya https tüm istekleri kabul edebilirsiniz (1).


Output
Please choose ....

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

Seçiminizi yaptıktan sonra Cerbot başarılı olursa aşağıdaki gibi bir çıktı verir.


Output
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-07-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

   

Yükleme işlemini tamamladık. Sitenizin adres çubuğunda yeşil kilit ikonunu görmeniz gerekir. Certbot Otomatik Yenileme Encrypt sertifikaları sadece doksan gün için geçerlidir.

Bu durum kullanıcıların sertifika yenileme sürecini otomatikleştirmelerini teşvik etmektir.

Kurduğumuz certbot paketine bir yenileme senaryosu ekleyerek yenileme sürecini otomatikleştirebiliriz. /etc/cron.d.

Bu komut, günde iki kez çalışır ve geçerlilik süresinin sona ermesinden sonraki otuz gün içinde sertifikayı otomatik olarak yenileyecektir.

Yenileme sürecini test etmek için aşağıdaki komutla kuru çalışabilirsiniz:


sudo certbot renew --dry-run

Gerektiğinde, Certbot sertifikalarınızı yenileyecek ve değişiklikleri almak için Apache’yi yeniden yükleyecektir.

Otomatik yenileme süreci başarısız olursa, Encrypt, belirttiğiniz e-postaya bir sertifika gönderir ve sertifikanızın geçerliliği sona erdiğinde sizi uyarır. Kolay gelsin.

Ücretsiz SSL Let’s Encrypt ile Sertifika Kurulumu

Bu yazıda Let’s Encrypt ile Ubuntu 16.04 üzerinde ücretsiz ssl sertifikası kurulumunu anlatacağım.

Let’s Encrypt, ücretsiz TLS / SSL sertifika alma, kurma ve web sunucularında şifrelemeyi yani HTTPS’yi etkinleştirmeyi ücretsiz sağlayan bir Sertifika Yetkilisidir. (CA) . Aşağıdaki adımların çoğunu otomatikleştirmek yani süreci basitleştirmek için Certbot yazılım istemcisini kullanacağız.

SSL Sertifikası edinme ve yükleme sürecinin tamamı Apache ve Nginx üzerinde otomatik hale getirilmiştir.

Bu rehberde ayrı bir sunucu bloğu dosyası yerine varsayılan Nginx yapılandırma dosyasını kullanacağız. Her etki alanı için farklı Nginx sunucu blok dosyaları oluşturmanız bazı yaygın hataları önlemeye ve varsayılan dosyaların amaçlandığı gibi yapılandırmasına olanak sağlar. SSL’i sunucu blokları kullanarak kurmak istiyorsanız aşağıdaki adımları takip etmelisiniz.

Hazırlık

Her şeyin doğru çalışması için ihtiyacınız olan bilgiler:

Ubuntu 16.04 sunucusunu kurmuş olmanız gerekir.
Güvenlik açısından “root” değil root haklarına sahip başka bir kullanıcı oluşturmanızı tavsiye ederim.

Nginx Web Sunusu kurulu olmalıdır.
Kayıt edilmiş bir alan adına ihtiyacınız olacak. Uzantısı önemli değil ancak isim sunucularını (nameserver) doğru şekilde yapılandırdığınızdan emin olun.

A Kaydı

alanadiniz.com —-> Sunucunuzun IP Adresi

CNAME

 www.alanadiniz.com —-> alanadiniz.com 

Certbot Kurulumu

SSL sertifikası almak için Let’s Encrypt’ı kullanmanın ilk adımı, Certbot yazılımının sunucunuza yüklenmesidir.

Certbot çok aktif bir gelişme içerisindedir, dolayısıyla Ubuntu tarafından sağlanan Certbot paketleri eski sürüm olma eğilimindedir. Ancak, Certbot geliştiricileri güncel sürümlere sahip bir Ubuntu yazılım deposu bulundurur, bu yüzden bu depoyu kullanırız.

Ekleyelim, aşağıdaki komutu girin.

sudo add-apt-repository ppa:certbot/certbot

Paket bilgilerini güncelleyelim.

sudo apt-get install python-certbot-nginx

Certbot artık kullanıma hazır, ancak Nginx SSL yapılandırması için Nginx’in bazı ayarlarını doğrulamamız gerekiyor.

Nginx Ayarları

Certbot, Nginx için SSL’i otomatik olarak yapılandırabilir, ancak yapılandırmanızın doğru sunucu bloğunu bulabilmesi gerekir. Bunu dosya içinde, sertifika isteğinde bulunduğunuz alanla eşleşen bir yönerge (server_name )arayarak yapar .

Yeni bir Nginx yüklemesiyle başlıyorsanız, varsayılan yapılandırma dosyasını güncelleyebilirsiniz. Dosyayı editörünüzde açın. (/etc/nginx/sites-available/default)
server_name satırını bulun ve alan adınızla aşağıdaki gibi değiştirin. Boşluk bırakarak www. versiyonunu da eklemeyi unutmayın.

server_name alanadiniz.com www.alananiniz.com;

Dosyayı kaydedin ve kapatın.

Nginx yapılandırmasındaki sözdizimini doğrulayın.

sudo nginx -t

Herhangi bir hata alırsanız, dosyayı yeniden açın ve yazım hatalarını kontrol edin, ardından tekrar test edin.

Yapılandırmanızın sözdizimi doğru olduğunda, yeni yapılandırmayı aktif etmek için aşağıdaki komutla Nginx’i yeniden başlatın.

sudo systemctl reload nginx

Certbot şimdi doğru sunucu bloğunu bulabilir ve güncelleyebilir.

Şimdi, HTTPS trafiğine izin vermek için güvenlik duvarımızı güncelleyeceğiz.

Güvenlik Duvarı üzerinden HTTPS’ye İzin Verme

Nginx, güvenlik duvarı için (ufw), kurulumla birlikte birkaç profil kaydeder. Güvenlik duvarı kurmanıza gerek yoktur.

Kontrol edelim

sudo ufw status

Yeni kurulmuş bir web sunucusunda yalnızca HTTP trafiğine izin verildiği için muhtemelen şu şekilde görünecektir:


Output
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 Nginx tam profiline izin verebilir ve sonra Nginx HTTP profilini silebiliriz:


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

Durumu kontrol edelim,

sudo ufw status

komut satırı aşağıdaki gibi bir çıktı vermeli.


Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Artık Certbot’u çalıştırmaya ve sertifikalarımızı almaya hazırız.

SSL Sertifikasının Alınması

Certbot, SSL sertifikaları almak için eklentiler aracılığıyla çeşitli yollar sunar. Nginx eklentisi, Nginx’in yeniden yapılandırılması ve gerektiğinde yapılandırmanın yeniden yüklenmesi ile ilgilenir:

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

Sertifikanın geçerli olmasını istediğimiz adlarını (-d) ve --nginx eklentisi çalışacağını belirtiyoruz.

Certbot ilk kez çalışıyorsa bir e-posta adresi girmenizi ve hizmet şartlarını kabul etmenizi isteyecektir. Bunu yaptıktan sonra Certbot, Let’s Encrypt sunucusuyla iletişim kurar ve ardından sertifika isteğinde bulunduğunuz alanadını kontrol eder.

İşlem başarılı olursa, certbot HTTPS ayarlarınızı nasıl yapılandırmak istediğinizi soracaktır. Tüm istekleri Https’ye yönlendirebilir, ya da hem http hem de https kullanabilirsiniz. Bir nedeniniz yoksa 2’yi seçmenizi tavsiye ederim.


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

Seçiminizi yapıp Enter’a bastıktan sonra Nginx yeniden yüklenecektir.
Bu işlem, başarılı olduğunu ve sertifikalarınızın nerede saklandığını bildiren aşağıdaki gibi bir mesajla sona erer:


Output
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

Alanadınızı tarayıcıya yazarak güvenlik sertifikasının yuklendiğini dogrulayabilirsiniz. Unutmayın, hali hazırda çalışan bir web sitesinin alan adı üzerine SSL sertifikası kurduysanız, tarayıcı adres çubuğunda yeşil ikon görünmeyebilir. Bunun nedeni genellikle sitenizdeki bağlantıların bir veya daha fazlasının http ile yazılmış olmasıdır. Örneğin bir görseli sitenizin kök dosyasından çağırıyor olsanız bile https://alanadiniz.com/img/resim.jpg şeklinde çağırmalısınız. Sitenizdeki güvenli olmayan bağlantıları görmek için Chrome ve Firefox’un geliştirici aracını kullanabilirsiniz. Güvenli olmayan yani “http” ile başlayan bağlantıları tespit edip düzelttiğinizde sertifikanız doğru şekilde çalışacaktır.

Certbot Otomatik Yenileme

Encrypt sertifikaları sadece doksan gün için geçerlidir. Bu durum kullanıcıların sertifika yenileme sürecini otomatikleştirmelerini teşvik eder. Certbot, yüklü paketi, systemd zamanlayıcısı aracılığıyla günde iki kez çalıştırak bizim için bunu otomatik yapar. Sistem dışı dağıtımlarda, bu işleve yerleştirilmiş bir betik sağlanır. /etc/cron.d. Bu görev günde iki kez çalışır ve geçerlilik süresinin sona ermesinden sonraki otuz gün içinde sertifikayı yeniler. (sertifika bitiş tarihinin hemen öncesinde çalıştığını varsayarak)

Yenileme sürecini aşağıdaki komutu girerek test edebilirsiniz:

sudo certbot renew --dry-run

Hata görmüyorsanız, herşey tamamdır. Otomatik yenileme, gerektiğinde, Certbot sertifikalarınızı yenileyecek ve değişiklikleri almak için Nginx’i yeniden yükleyecektir. Otomatik yenileme süreci başarısız olursa, Let’s Encrypt komut satırında belirttiğiniz e-postaya bir sertifika gönderir ve sertifikanızın geçerliliği sona erdiğinde sizi uyarır.

Certbot aracılığı ile Let’s Encrypt istemcisini, sertifikalarını ve bu sertifikaları kullanacak şekilde yapılandırılmış Nginx’i yüklediniz ve otomatik sertifika yenilemeyi kurdunuz. Kolay gelsin.

  1. Murat diyor ki:

    Hocam ben yeni VPS aldım. Üzerine LAMP kurulumu yaptım. Sitemi apache’de http olarak çalışan bir domain ile kullanıyorum.

    ve sitemde sudo nano /etc/apache2/sites-available/000default.conf bulunmakta.

    Kurulumu detaylı olarak anlatmanız mümkün müdür? Ya da size nasıl ulaşabilirim. Soracağım sorular olabilir. Yardımcı olursanız çok sevinirim.

    • Yılmaz Saraç diyor ki:

      Selam,
      Şu an 000default.conf üzerinde http versiyonun ayarlı olduğunu, sitenin çalıştığını, sshile terminalde root’a eriştiğinizi varsayıyorum.

      Let’s Encrypt’i kuralım. Komutları sırasıyla yazıyorum.

      1- sudo add-apt-repository ppa:certbot/certbot
      2- sudo apt-get update
      3- sudo apt-get install python-certbot-apache

      yukarıdaki komutlar seçenek sunmayacak. Sadece girmen yeterli. Sonra aşağıdaki komutu girin.

      sudo certbot --apache -d siteninadresi.com

      Üsteki komutu girdikten önce e-posta adresini sorar. Geçerli bir e-posta adresi girin.

      Sonra e-posta adresini paylaşmak için onay ister. Ok’lersin.

      Sonra SSL yüklemek için onay ister. Ok ya da Agree çıkar, onaylarsın.

      daha sonra ssl’i alanadının hangi versiyonu ile kullanmak istediğini sorar.

      1. https://www.siten.com
      2. https://siten.com

      eğer bir bir nedenin yoksa www olmayan versiyonu seçin.

      Son olarak siteyi hem ssl hem de ssl olmadan kullanmak isteyip istemediğini sorar.

      Yine bir nedenin yoksa 2. seçeneği kullan, tüm istekler https gelsin. (search konsolda ek mülk oluşturmak zorunda kalmazsın.)

      hepsi bu kadar.

      Hali hazırda ssl olmadan çalışan bir siteyi ssl’e çevirdiğin zaman bazı hatalar alırsın. Kilit işareti yeşile dönmez vs..

      Bunun en yaygın sebebi web sitesindeki görsellerin adreslerinin http olması. WordPress kullanıyorsan basitçe resmi kaldırıp tekrar ekle (silmene gerek yok).

      Yine http olarak verdiğin iç ve dış bağlantılarda ssl’in düzgün çalışmasını engeller.

      Kısaca sitede http bağlantı bırakma, hepsini https yap. Css, javascript dosyaları, resimler, linkler.. hepsini kontrol et.

      Sorunlu bağlantıları tespit etmek için chrome üzerinde geliştirici araçlarını kullanabilirsin. Konsol’da görünür.

      Son olarak LetsEncyrpt sertifikalar 3 aylıktır, süre dolarken mesaj gelir kendi kendine yenilemezse aşağıdaki komutla kolayca yenilersin.

      sudo certbot renew

      Sorun olursa yazarsın. Kolay gelsin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir