Letsencrypt ile websitenizi ücretsiz SSL’e geçirin
Letsencrypt dünya üzerindeki internet alan adı kullanıcılarının ücretsiz ve açık olarak SSL sertifikası sahibi olmalarını hedefleyen bir projedir. Projenin sponsorları arasında Mozilla, Cisco, Chrome, Akamai ve Facebook gibi internet ve teknoloji öncüleri yer almaktadır.
HTTP protokolü ile yapılan haberleşmede taşınan veri hat üzerinde çıplak akarken tehlikelere açıktır. HTTPS protokolünde ise taşınan veri şifrelenir ve veri güvenliği standart bir teminat altına alınmış olur.
HTTPS protokolü kullanımı bu kadar önemli olmasına karşın, önemi ölçüsünde kullanılmadığını görüyoruz. Bunun en önemli sebeplerinden biri de SSL sertifikaların belirli otoriteler aracılığıyla ücretli olarak sunulması diyebiliriz. Letsencrypt projesi ile herkes için SSL dönemi başladı diyebiliriz.
Ben kendi internet girişimim https://kodedu.com’u Letsencrypt ile sertifikalandırdım. Şimdi sizlerle nasıl yaptığımı paylaşmak istiyorum.
Letsencrypt birden çok platform ve HTTP server ile uyumlu olarak çalışıyor. Bu yazıda işletim sistemi olarak Linux tabanlı Centos 7, HTTP server olarak da Nginx kullanacağız. Benim tercihlerim bu yönde, siz de kendi sistem ve ortamınıza göre benzer yönde alan adlarınız için HTTPS geçişini sağlayabilirsiniz.
Adım 1 → Certbot yazılımının kurulması
Certbot, Letsencrypt projesinden faydalanmak için geliştirilen bir yazılımdır. Centos 7 için kurulum adımı aşağıdaki gibidir.
$ sudo yum install certbot
Adım 2 → Nginx’in yapılandırılması
İlk önce istediğimiz alan adlarını varsayılan HTTP 80 portundan dışarıya açmalı ve HTTPS karşılığına yönlendirmeliyiz. Ayrıca Certbot alan adınızın doğrulaması için sisteminizde .well-known
isimli bir dizin oluşturacak ve alan adınızı doğrulamak için buraya birkaç dosya ekleyecektir.
server {
listen 80;
server_name kodedu.com www.kodedu.com; (1)
location /.well-known { (2)
alias /var/www/cert/.well-known;
}
location / {
return 302 https://$host$request_uri; (3)
}
}
1 | Tüm alan isimlerini boşluk ile ayırarak yazabiliriz. |
2 | Alan adının size ait olup olmadığını doğrulamak için Certbot .well-known isimli dizini kullanacaktır. |
3 | /.well-known dışındaki tüm HTTP taleplerini HTTPS adresine yönlendiriyoruz. Duruma göre 301 (Kalıcı) veya 302 (Geçici) yönlendirme durum kodlarından birini kullanabiliriz. |
Adım 3 → Alan adı için sertifika oluşturulması
Bu adımın hemen öncesinde değiştirilen Nginx konfigürasyonun devreye girmesi için yeniden başlatmalıyız.
systemctl restart nginx
Aşağıdaki komut ile kodedu.com ve www.kodedu.com alan adları için sertifika oluşturuyoruz.
certbot certonly --webroot -w /var/www/cert -d kodedu.com -d www.kodedu.com
Ardından sertifikanın oluşturulduğunu görüyoruz. Sertifikanın kayıt edildiği dizini bir köşeye kopyalayabiliriz.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/kodedu.com/fullchain.pem. Your cert will
expire on 2017-04-25. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again. To
non-interactively renew *all* of your certificates, run "certbot
renew"
- 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
Adım 4 → SSL sertifikasının Nginx’e tanıtılması
Sertifika üretildiğine göre artık varsayılan HTTPS portu olan 443 için sunucu bloğunu tanımlayabiliriz. Bir önceki adımda bildirilen sertifika yolunu burada kullanmalıyız.
server {
listen 443 ssl;
server_name kodedu.com www.kodedu.com;
root /var/www/kodedu.com;
index index.html index.htm;
ssl_certificate /etc/letsencrypt/live/kodedu.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kodedu.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
try_files $uri $uri/;
}
}
Yine bu değişiklikten sonra Nginx servisini yeniden başlatmalıyız systemctl restart nginx
İşlem bu kadar.
Faydalı olması dileğiyle.
1 Comment
Bu güzel makale için teşekkürler.