Nginx'te bir HTTPS sorunu yaşadığınızda ilk hedef, hatanın yapılandırmadan, sertifika dosyalarından ya da istemci tarafı uyumsuzluktan kaynaklandığını ayırmaktır. Aşağıdaki sırayla ilerlemek zaman kazandırır.
1. Yapılandırmayı doğrulayın
sudo nginx -t
sudo nginx -T | grep -E 'ssl_|listen|server_name'
nginx -t, sertifika ve anahtar dosyalarının okunabilirliğini ve eşleşmesini de denetler. "key values mismatch" hatası, sertifika ile özel anahtarın çifti olmadığını gösterir.
2. Logları açın
error_log /var/log/nginx/error.log info;
# Sorunlu sanal sunucu için ayrıntı:
# error_log /var/log/nginx/debug.log debug;
debug düzeyi, yalnızca nginx'in debug desteğiyle derlenmiş sürümünde çalışır ve çok fazla çıktı üretir; sorunu yakalayınca kapatın. El sıkışma hataları (SSL_do_handshake() failed) genellikle error logda görünür.
3. Dışarıdan test edin
openssl s_client -connect ornek.com:443 -servername ornek.com -showcerts
curl -vI https://ornek.com/
Çıktıda sunulan zincirin, sertifika dosyanızla uyuştuğunu kontrol edin.
Sık sorunlar ve çözümleri
- Ara sertifika eksik:
ssl_certificatealanına yalnızca sunucu sertifikasını değil, sertifika + ara sertifikaları içeren birleşik dosyayı (fullchain) verin. - Yanlış sanal sunucu: SNI eşleşmezse varsayılan sunucunun sertifikası döner;
server_namevelisten 443 sslsatırlarını kontrol edin. - Değişiklik görünmüyor:
sudo systemctl reload nginxile yeniden yükleyin. - Protokol uyumsuzluğu:
ssl_protocols TLSv1.2 TLSv1.3;eski istemcileri dışarıda bırakabilir.
Önleme
Değişiklikten önce nginx -t çalıştırmayı alışkanlık edinin ve yapılandırmanın yedeğini alın. Zincir kontrolü için SSL kontrol aracından, genel adımlar için SSL sorun giderme aracından yararlanabilirsiniz.