Ana içeriğe geç

Nginx SSL Sertifikası ve HTTPS Yönlendirme Hataları Nasıl Çözülür?

Bu rehberde ne öğreneceksiniz?

Bu rehber, Nginx üzerinde HTTPS geçişinde yaşanan yaygın SSL ve yönlendirme hatalarını açıklar.
HTTP’den HTTPS’e yönlendirme, firewall sorunları ve sertifika hataları pratik şekilde çözülür.


1. Nginx Hata Loglarını Kontrol Edin

Çoğu SSL ve yönlendirme hatası loglarda net ipuçları bırakır.

sudo cat /var/log/nginx/error.log
  • Bu komut Nginx hata kayıtlarını ekrana yazdırır.

2. HTTPS Dinleme (listen) Direktifini Doğrulayın

  1. HTTPS için Nginx’in 443 portunu dinlemesi gerekir.

listen 443 ssl;
listen [::]:443 ssl;
  • Bu satırlar HTTPS trafiğini etkinleştirir.

SSL dosya yollarını da kontrol edin:


ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  • Bu ayarlar sertifikanın doğru dosyaları kullandığını belirtir.

3. HTTP’den HTTPS’e 301 Yönlendirme Yapısı

  1. HTTP trafiği kalıcı olarak HTTPS’e yönlendirilmelidir.

server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
  • Bu blok HTTP isteklerini HTTPS adresine yönlendirir.

4. Firewall (UFW) Ayarlarını Kontrol Edin

  1. HTTPS çalışmıyorsa 443 portu kapalı olabilir.

sudo ufw status
  • Bu komut açık portları listeler.

  1. HTTPS izni eklemek için:

sudo ufw allow 'Nginx HTTPS'
  • Bu kural 443 portunu dış dünyaya açar.

  1. Alternatif olarak tek kural kullanabilirsiniz:

sudo ufw allow 'Nginx Full'
  • Bu ayar hem HTTP hem HTTPS trafiğine izin verir.

5. Sertifika Kaynaklı Tarayıcı Hataları

  • Bazı hatalar Nginx değil sertifika kaynaklıdır.

  • Self-signed sertifika kullanıyorsanız tarayıcı uyarı verir. Bu durum kullanıcı güvenini düşürür.


Süresi dolmuş sertifika için hata kodu genelde: NET::ERR_CERT_DATE_INVALID

6. Let’s Encrypt Sertifikasını Yenileyin

L

  1. let’s Encrypt sertifikaları 90 gün geçerlidir.

  2. Yenileme servisini kontrol edin:


sudo systemctl status snap.certbot.renew.service
  1. Bu servis otomatik yenilemeyi yönetir.

  1. Manuel yenileme için:

sudo certbot certonly --force-renew -d example.com
  • Bu komut sertifikayı zorla yeniler.

Test amaçlı deneme:


sudo certbot renew --dry-run
  • Bu işlem yenilemenin sorunsuz çalıştığını doğrular.

7. Değişikliklerden Sonra Yapılandırmayı Test Edin

  1. Her değişiklik sonrası sözdizimini kontrol edin.

sudo nginx -t
  • Bu komut yapılandırma hatası olup olmadığını denetler.

  1. Ardından servisi yeniden yükleyin:

sudo systemctl restart nginx
  • Bu işlem ayarları aktif eder.

Sıkça Sorulan Sorular (SSS)

1. HTTPS yönlendirmesi neden çalışmıyor? Genellikle 443 portu kapalıdır veya listen direktifi eksiktir.

2. 302 yerine neden 301 kullanmalıyım? 301 kalıcıdır ve SEO değerini HTTPS adresine taşır.

3. Certbot otomatik yenilemezse ne olur? Sertifika süresi dolar ve tarayıcı güvenlik hatası gösterir.

4. Tek server bloğunda yapılabilir mi? Evet, ancak ayrı HTTP ve HTTPS blokları daha nettir.

Sonuç

HTTPS ve SSL hataları genelde küçük yapılandırma eksiklerinden çıkar. Doğru yapılandırılmış bir Nginx altyapısı için projelerinizi Rabisu Bulut platformunda hemen deneyebilirsiniz.