Bu makalede Ubuntu yüklü bir sunucuda, Web sunucusu olarak Nginx kullanan siteler için ücretsiz Let’s Encrypt SSL kurulumunu anlatacağım.
Giriş
Let’s Encrypt, internet dünyasını daha güvenli bir hale getirmek için ücretsiz olarak SSL/TLS sertifikaları veren bir dernektir. Web dünyasının önde gelen şirketleri bu derneğe destek olarak faaliyetlerinin devamını sağlamaktadır.
Daha fazla bilgi için bknz:
https://tr.wikipedia.org/wiki/Let's_Encrypt
Bu makalede Certbot uygulaması aracılığıyla Let’s Encrypt SSL sunucumuza kurup, SSL alma işini otomatiğe bağlayacağız.
Gereksinimler
SSL alabilmek için alan adınıza ait A kayıtlarının girilmiş ve DNS tam olarak çözümlenmiş olması gerekir. Nginx site konfigrasyon dosyanızda 80 portu için alan adınız www’li ve www olmadan eklemiş olmanız gerekiyor. Şimdi bunu kontrol etmek için /etc/nginx/sites-available/senin.conf dizininde bulunan dosyaya bakalım.
server {
listen 80;
listen [::]:80;
.
.
server_name domain.com www.domain.com;
.
.
}
Certbot Kurulumu
Let’s Encrypt SSL almanın en kolay yolu Certbot kullanmaktır.
Şimdi Certbot kurulumunu yapalım.
Ubuntu 18.04 için;
sudo add-apt-repository ppa:certbot/certbot
Kabul için ENTER basın.
sudo apt install python-certbot-nginx
Ubuntu 20.04 için;
sudo apt install certbot python3-certbot-nginx
Eğer güvenlik duvarı kullanıyorsanız Güvenlik duvarında HTTPS bağlantılarına izin verilip verilmediğini kontrol etmelisiniz.
sudo ufw status
Çıktısı:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Bu sunucuda HTTPS bağlantılarına izin verilmediğini görüyoruz. Şimdi UFW güvenlik duvarında SSL bağlantılarına izin vermek için:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Tekrar kontrol edelim
sudo ufw status
Çıktısı:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
##Yeni Bir SSL Alma
sudo certbot --nginx -d example.com -d www.example.com
Yukarıdaki komutta alan adınızı değiştirmeyi unutmayın.
Her şey yolunda giderse Certbot size HTTPS ayarlarınızın nasıl yapılandırmak istediğinize dair soru soracak.
OutputPlease 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):
1 seçerseniz Certbot sizin için www yönelnedirmesini otomatik olaraksite conf dosyasına ekleyecek.
2 seçerseniz yönlendirme işlemini manuel yapmanız gerekecektir.
##SSL Sertifikalarını Otomatikleştirme
Bu işlemi root kullanıcısı ile yapmaınız gerekiyor.
Let’s Encrypt tarafından verilen SSL sertifikalarının geçerlilik süresi 3 aydır. Yani bu işlemi her 3 ayda bir yenilemek gerekir. Fakat bununla Certbot varken bizim uğraşmamıza gerek kalmayacak. Bu işlem ile sunucunuzda kullandığınız tüm siteler için SSL yenilenmesi otomatik yapılacak. Aşağıdaki komutu çalıştırmanız yeterli.
sudo certbot renew --dry-run