Nginx HTTPS (SSL) Kurulumu: Adım Adım Ubuntu Rehberi
Nginx HTTPS (SSL) Kurulumu: Adım Adım Ubuntu Rehberi
Nginx HTTPS kurulumu temel olarak 5 adımdan oluşur: 1) Sunucuda OpenSSL ile bir CSR (Sertifika İmza İsteği) ve Private Key (Gizli Anahtar) oluşturulur. 2) CSR kodu kullanılarak bir SSL sertifikası satın alınır (veya Let's Encrypt ile ücretsiz üretilir). 3) Sağlayıcıdan alınan .crt dosyası ve .key dosyası sunucuya (örneğin /etc/ssl/ dizinine) yüklenir. 4) Nginx konfigürasyon dosyasında 443 portu dinlenerek sertifika yolları (ssl_certificate) tanımlanır. 5) UFW (Güvenlik Duvarı) üzerinden 443 portuna izin verilip Nginx yeniden başlatılır.
Web sitenizin güvenliği ve arama motorlarındaki (SEO) itibarı için HTTPS protokolü artık bir seçenek değil, zorunluluktur. Nginx gibi yüksek performanslı ve düşük kaynak tüketen bir web sunucusu kullanıyorsanız, SSL sertifikası kurulum süreci oldukça pratik ve systematiktir. Bu rehberde, Ubuntu tabanlı Linux sunucunuzda sıfırdan HTTPS aktivasyonunu adım adım gerçekleştireceğiz.
Adım 1 — CSR ve Private Key Oluşturma (OpenSSL)
SSL sertifikası satın alabilmek için öncelikle sunucunuzda (Ubuntu/Linux) bir CSR (Certificate Signing Request) kodu ve bu koda eşlik eden bir şifreleme anahtarı (Private Key) üretmeniz gerekir.
Öncelikle sertifikalarınızı barındıracağınız klasörü oluşturun (Eğer yoksa):
sudo mkdir -p /etc/ssl/private
Aşağıdaki OpenSSL komutunu çalıştırarak 2048 bitlik RSA anahtarınızı ve CSR dosyanızı oluşturun:
sudo openssl req -new -newkey rsa:2048 -nodes \
-keyout /etc/ssl/private/site.key \
-out /etc/ssl/site.csr
Bu komut size Ülke, Şehir, Organizasyon gibi sorular soracaktır. En önemli adım "Common Name (CN)" adımıdır. Buraya mutlaka güvenliğe kavuşturmak istediğiniz domain adresinizi (Örn: example.com veya www.example.com) yazmalısınız.
Oluşan dosyaların görevleri şunlardır:
site.key: Private Key (Gizli Anahtar). Bu dosya ASLA kimseyle paylaşılmamalıdır ve sunucunuzda kalmalıdır.site.csr: Sertifika İsteği. Bu dosyanın içindeki metni kopyalayıp SSL satın alacağınız firmaya vereceksiniz.
Adım 2 — SSL Sertifikası Satın Alma ve Doğrulama
Sunucunuzda oluşturduğunuz site.csr dosyasının içindeki metni (cat komutuyla okuyabilirsiniz) kopyalayarak SSL sağlayıcınıza (Comodo, GlobalSign, Sectigo vb.) yapıştırın.
Firma, domainin gerçekten size ait olduğunu kanıtlamanız için sizden bir doğrulama isteyecektir:
- E-posta Doğrulaması: admin@domain.com adresine gelen linke tıklama.
- DNS Doğrulaması: Domain yöneticinize TXT veya CNAME kaydı ekleme.
- HTTP Doğrulaması: Sitenizin kök dizinine bir .txt dosyası yükleme.
Doğrulama işlemi bittikten sonra firma size genellikle bir .crt veya .pem dosyası (Public Certificate) iletecektir.
Adım 3 — Sertifikayı Sunucuya Yükleme
Firma tarafından size verilen sertifika dosyasını (Örn: site_bundle.crt), SFTP, FileZilla veya SCP kullanarak sunucunuzdaki /etc/ssl/certs/ dizinine yükleyin.
Adım 4 — Nginx SSL Konfigürasyonu (HTTPS Yönlendirme)
Artık elimizde hem Private Key hem de Public Certificate mevcut. Şimdi Nginx'e 443 (HTTPS) portunu dinlemesini ve bu dosyaları kullanmasını söyleyeceğiz. Konfigürasyon dosyanızı açın (Örn: /etc/nginx/sites-available/default veya example.com.conf).
server {
# Gelen güvensiz HTTP (80) isteklerini HTTPS'e yönlendir (Opsiyonel ama tavsiye edilir)
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
# HTTPS (443) portunu dinle
listen 443 ssl http2;
server_name example.com www.example.com;
# Sertifika ve Gizli Anahtar Dosya Yolları
ssl_certificate /etc/ssl/certs/site_bundle.crt;
ssl_certificate_key /etc/ssl/private/site.key;
# Güvenlik Protokolleri (Eski TLS sürümlerini kapatın)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /var/www/html;
# Angular/React SPA'lar için routing 404 çözümü
try_files $uri $uri/ /index.html;
}
}
Yapılandırmada sözdizimi (syntax) hatası yapıp yapmadığınızı test etmek için şu komutu çalıştırın:
sudo nginx -t
Çıktıda syntax is ok ve test is successful görüyorsanız harika!
Adım 5 — Firewall (UFW) Ayarları
Eğer sunucunuzda UFW (Uncomplicated Firewall) aktifse, dışarıdan gelen 443 portu (HTTPS) isteklerine izin vermeniz gerekir. Aksi halde sitenize erişilemez.
# Nginx için hem HTTP (80) hem HTTPS (443) izinlerini açın
sudo ufw allow "Nginx Full"
# Nginx servisini yeniden başlatarak ayarları devreye alın
sudo systemctl restart nginx
Adım 6 — HTTPS Testi ve Let's Encrypt Önerisi
Kurulum tamamlandı! Tarayıcınızı açıp https://siteniz.com adresine gidin. URL çubuğunun sol tarafında bir "Kilit" simgesi görüyorsanız bağlantınız başarıyla şifrelenmiştir.
7. Sık Sorulan Sorular (SSS)
HTTPS (SSL) kullanmak SEO için neden önemli?
Google, kullanıcı verilerinin güvenliğine büyük önem verir. Şifrelenmemiş (HTTP) siteleri arama sonuçlarında alt sıralara atar ve tarayıcılarda "Güvenli Değil" uyarısı çıkartır. HTTPS kullanmak sitenizin sıralamasını ve kullanıcı güvenini doğrudan artırır.
TLSv1 ve TLSv1.1 protokollerini neden kapattık?
Bu protokoller eski, modası geçmiş ve güvenlik zafiyetleri (vulnerabilities) barındıran şifreleme yöntemleridir. Modern sunucu mimarilerinde sadece TLSv1.2 ve TLSv1.3 kullanılması sektör standardıdır.
Nginx -t komutunda "Permission denied" hatası alıyorum, ne yapmalıyım?
Bu hata, sertifika (crt) veya key dosyalarınızın izinlerinin Nginx'in okuyamayacağı şekilde ayarlandığını gösterir. Dosya izinlerini chmod komutuyla ayarlamalı veya doğru dosya yolunu girdiğinizden emin olmalısınız.
Sonuç
Bu detaylı rehberde, bir Linux (Ubuntu) sunucusu üzerinde Nginx HTTPS kurulumunu, Private Key oluşturulmasından güvenlik duvarı ayarlarına kadar baştan sona öğrendiniz. Artık sunucunuzdaki veriler şifreli (Encrypted) bir şekilde taşınıyor ve hem kullanıcılarınız hem de arama motorları gözünde güvenilir bir platforma sahipsiniz.