Let’s Encrypt ile Django Projemize Ücretsiz SSL Kuralım

Baysan
3 min readDec 15, 2020

Let’s Encrypt Nedir?

Let’s Encrypt web sunucularının Http yerine Https kullanılmasını yaygınlaştırmak amacıyla SSL/TLS sertifikaların ücretsiz olarak üretilmesi ve dağıtılması amacıyla kurulmuştur. Sektörün önde gelen şirketleri bu servise sponsor olarak devamlılığını sağlamaktadır.

Bu yazıda Ubuntu 18.04 & Django 3 kullanılmıştır ve adımlar Pardus işletim sistemi üzerinde uygulanmıştır

Sunucu üzerinde hali hazırda kurulu bir Nginx olduğu varsayılmıştır

Öncelikle buradan Let’s Encrypt’i sunucuda otomatik çalıştırmamızı yarayacak ‘Cert Bot’ yazılımını yüklemek için official web sitesine gidiyoruz.

Ardından sunucumuzun çalıştığı programı ve üzerinde bulunduğu işletim sistemini seçiyoruz.

Karşımıza otomatik olarak kurulum adımları çıkacaktır.

Ardından ben Linux kullandığım için ssh servisini kullanarak sunucuma bağlanıyorum fakat siz Windows kullanıcısı iseniz PuTTY ile sunucunuza bağlanabilirsiniz.

Ve sırasıyla Cert Bot kurulumu için karşımıza çıkan komutları çalıştırıyoruz.

4. adıma geldiğimizde:

$ sudo certbot — nginx

Bizden sunucumuz üzerinde hangi web sitelerine kurulum yapılmasını istediğimizi soracak. Dilediğinizi belirttikten sonra otomatik olarak cert bot kurulumu tamamlanacaktır.

Ardından nginx konfigürasyon dosyası için:

Ve sitemiz için konfigürasyon dosyası bu şekilde olmalıdır

Ardından dosyamızı kaydedip çıkıyoruz. Proje kök dizinimizdeki settings.py veya local settings dosyamızı açıp aşağıdaki kodları ekliyoruz.

SECURE_PROXY_SSL_HEADER = (‘HTTP_X_FORWARDED_PROTO’, ‘https’)

SECURE_SSL_REDIRECT = True

SESSION_COOKIE_SECURE = True

CSRF_COOKIE_SECURE = True

local_settings.py dosyamızın son görünümü bu şekilde olacaktır

Ardından

systemctl restart nginx

komutu ile nginx’i yeniden başlatıyoruz ve SSL sertifikamız hayırlı olsun

OPSİYONEL

Eğer DNS yönlendirmelerinizi Cloudflare üzerinden yapıyorsanız, web site yönetim panelinden SSL/TLS tab’ı içerisine gelerek;

Default olarak Flexible olarak ayarlanan encryption modunuzu Full yapmanız gerekmektedir. Bunun sebebi ise Cloudflare’in Flexible modunda kendi yüklediği SSL sertifikasını kullanıyor olmasıdır. Fakat biz kendi SSL sertifikamızı yüklediğimiz için Cloudflare’a kendi yüklediğimiz SSL sertifikasını kullanmasını söyledik.

Not: Bütün istekleri https üzerinden yapmasını söylediğimizde nginx içerisinde ufak bir konfigürasyon yapmamız gerekli. İlgili projenin nginx conf dosyasının en üst satırına bu blok yazılmalıdır. HTTP ile gelen istekleri Otomatik HTTPS’e redirect edecektir.

server {
listen 80;
listen [::]:80;
server_name domaininiz.com
www.domaininiz.com;
return 301
https://domaininiz.com$request_uri;
}

Eğer subdomainlerimiz için de ssl kurmak istersek;

sudo certbot -d domain.com,sub.domain.com,sub.domain.com,sub.domain.com,www.domain.com — expand

Umarım faydalı olmuştur, iyi çalışmalar dilerim.

--

--

Baysan
Baysan

Written by Baysan

Lifelong learner & Developer. I use technology that helps me. mebaysan.com

No responses yet