Cloudflare ve Nginx ile SSL Aktifleştirme

Merhaba arkadaşlar, bu yazımda Express.js çalışan bir sunucuda Nginx kullanarak SSL (HTTPS) aktifleştirmesini anlatmaya çalışacağım.

Gereksinimler

  • Nginx
  • Express.js server
  • Cloudflare portala eklenmiş domain
Cloudflare portala eklenmiş bir domain ve Express.js çalışan bir sunucu

SSL Sertifikası Oluşturma

Öncelikle portala giriyoruz ve SSL/TLS menüsüne gidiyoruz.

  • Flexible: Kullanıcı ve Cloudflare arasında SSL kullanılır. Cloudflare ve sunucu arasında herhangi bir SSL bağlantısı yoktur.
  • Full: Kullanıcı — Cloudflare arasında ve Cloudflare — sunucu arasında SSL sertifikası olması gerekir. Ancak SSL sertifikası doğrulaması göz ardı edilir. Self signed sertifikalar kullanılabilir.
  • Full (Strict): Kullanıcı — Cloudflare arasında ve Cloudflare — sunucu arasında geçerli bir SSL sertifikası olması gerekir. Harici olarak satın aldığınız ya da Cloudflare tarafından doğrulanmış bir sertifika kullanabilirsiniz.
Origin Certificate Installation sayfası

SSL Sertifikasını Sunucuya Yükleme

SSH ile sunucumuza bağlanıyoruz ve nginx klasörünün içerisinde sertifika ve key dosyamızı saklayacağımız ssl klasörünü oluşturuyoruz.

root@ubuntu:~# mkdir /etc/nginx/ssl
root@ubuntu:~# cd /etc/nginx/ssl/
root@ubuntu:/etc/nginx/ssl#
nano ile sertifika dosyasının oluşturulması
root@ubuntu:/etc/nginx/ssl# ls
cert.pem key.pem

SSL Sertifikasını Nginx’e Tanıtma

Nginx ayarlarını yapabilmek için nginx klasörü içerisinde bulunan sites-available klasörüne gidip default dosyasını düzenleyebiliriz.

root@ubuntu:~# cd /etc/nginx/sites-available/
root@ubuntu:/etc/nginx/sites-available# ls
default
# Default server configuration
#
server {
listen 80;
server_name _;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://localhost:3000";
}
}
server {
listen 443 ssl http2;
server_name _;

ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;

location / {
proxy_pass http://localhost:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
root@ubuntu:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@ubuntu:~# nginx -s reload
HTTPS ile adresimize ulaştık
HTTP ile adresimize ulaştık

Full-Stack Web Developer