NGINX SSL hataları sertifika dosyasının bulunamaması, private key eşleşmemesi, eksik intermediate chain, yanlış SNI vhost, süresi dolmuş sertifika veya TLS uyumsuzluğundan kaynaklanabilir. Bu rehber sertifika–anahtar eşleşmesini ve gerçek sunulan zinciri doğrular.
nginx: [emerg] SSL_CTX_use_PrivateKey("/etc/ssl/private/example.key") failed
error:05800074:x509 certificate routines::key values mismatch
SSL_do_handshake() failed
HTTPS bağlantısında NGINX doğru sertifika zincirini ve eşleşen private key’i yüklemeli, istemcinin SNI adına uygun vhost’u seçmeli ve ortak TLS protokol/şifre kümesinde anlaşmalıdır.
ssl_certificate için çoğunlukla sunucu sertifikası ile intermediate sertifikaları doğru sırada içeren fullchain dosyası kullanılmalıdır. Eksik chain bazı tarayıcılarda çalışırken diğer istemcilerde doğrulama hatası oluşturabilir.
Private key ile sertifika eşleşmiyorsa NGINX config testi key values mismatch benzeri hatayla başarısız olur. Dosya adlarına güvenmek yerine public key fingerprint/modulus karşılaştırılmalıdır.
Aynı IP’de birden fazla HTTPS domain SNI ile ayrılır. server_name eşleşmesi veya default SSL server yanlışsa kullanıcı başka domaine ait sertifikayı görebilir.
Certbot yenilemesi başarılı olsa bile NGINX eski kopya dosyaya bakıyor veya reload edilmemiş olabilir. Sunulan canlı sertifikanın seri numarası disk dosyasıyla karşılaştırılmalıdır.
Sertifikayı ve key’i e-posta veya açık terminal çıktısında paylaşmayın; private key içeriği yerine yalnız public fingerprint ve dosya izinleri karşılaştırılmalıdır.
E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.
Anlamı: Sertifika ile private key aynı anahtar çiftine ait değil.
Muhtemel neden: Yanlış key dosyası veya yenileme sonrası path karışıklığı.
Anlamı: NGINX private key’i yükleyemedi.
Muhtemel neden: Dosya yok, izin, format, şifreli key veya eşleşme hatası.
Anlamı: Sertifika dosyası açılamıyor.
Muhtemel neden: Yanlış path, kırık symlink veya izin.
Anlamı: TLS müzakeresi tamamlanamadı.
Muhtemel neden: Protokol/şifre uyumsuzluğu, istemci sorunu veya kötü trafik.
Anlamı: Sunulan sertifikanın geçerlilik süresi bitmiş.
Muhtemel neden: Yenileme veya reload başarısız.
Anlamı: İstemci zinciri güvenilen köke tamamlayamıyor.
Muhtemel neden: Eksik veya yanlış intermediate chain.
Anlamı: İstenen hostname için başka vhost sertifikası sunuluyor.
Muhtemel neden: SNI/server_name/default_server hatası.
Anlamı: SSL dinleyen server bloğunda sertifika tanımlı değil.
Muhtemel neden: Eksik include veya yanlış server blok yapısı.
Bu ifadeyle eşleşen kayıt bulunamadı.
Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.
nginx -t
nginx -T | grep -nE 'listen .*ssl|server_name|ssl_certificate(_key)?'
Etkin sertifika yollarını ve SSL vhost’ları gösterir.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -issuer -serial -dates -ext subjectAltName
Gerçekte sunulan sertifika ve SAN bilgilerini gösterir.
openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -pubkey -noout | openssl sha256
openssl pkey -in /etc/letsencrypt/live/example.com/privkey.pem -pubout | openssl sha256
Private key’i göstermeden public key hash eşleşmesini doğrular.
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /etc/letsencrypt/live/example.com/cert.pem
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
Sertifika zincirini ve sunulan ara sertifikaları kontrol eder.
certbot certificates
systemctl status certbot.timer --no-pager
journalctl -u certbot -n 100 --no-pager
Yenileme tarihi, timer ve hata kayıtlarını gösterir.
nginx -t && systemctl reload nginx
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -serial -dates
Yeni sertifikanın canlı sunulduğunu doğrular.
NGINX hatasının temel nedeni aynı olsa da paket yolları, servis adları, güvenlik katmanları ve sanal host yönetimi kullanılan Linux dağıtımına veya Plesk altyapısına göre değişir.
NGINX SSL ve Handshake Hatası için systemd, paket yolu ve journald kontrolleri.
nginx -t
certbot certificates
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subjectNGINX SSL ve Handshake Hatası için SELinux, PHP-FPM pool ve RHEL tabanlı servis kontrolleri.
nginx -t
certbot certificates 2>/dev/null
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subjectPlesk tarafından üretilen NGINX sanal host dosyalarında nginx ssl ve handshake hatası kontrolü.
plesk bin certificate --list -domain example.com
nginx -t
plesk repair web example.com -nDiskteki dosyaya değil canlı sunulan sertifikaya bakın; path, eşleşme, chain, SNI ve TLS katmanlarını sırayla doğrulayın.
SNI kullanarak subject, SAN, issuer ve tarihleri kaydedin.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates -serialGerçek server bloğunun hangi certificate ve key dosyasını kullandığını doğrulayın.
nginx -T | grep -nE 'server_name example.com|ssl_certificate(_key)?'Symlink zinciri, owner ve key erişimi güvenli olmalıdır.
namei -l /etc/letsencrypt/live/example.com/fullchain.pem
namei -l /etc/letsencrypt/live/example.com/privkey.pemPublic key hash’leri aynı olmalıdır.
openssl x509 -in CERT -pubkey -noout | openssl sha256
openssl pkey -in KEY -pubout | openssl sha256Fullchain sırası ve server_name/default SSL vhost doğru olmalıdır.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/nullYeni serial/tarih canlı endpoint’te görünmelidir.
nginx -t && systemctl reload nginxYanlış private key dosyası seçilmiştir; hash eşleştirmesi yapılır.
openssl x509 -in CERT -pubkey -noout | openssl sha256; openssl pkey -in KEY -pubout | openssl sha256Certbot timer, challenge ve reload adımları kontrol edilir.
certbot certificates; systemctl list-timers | grep certbotcert.pem yerine doğru fullchain dosyası kullanılmalıdır.
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/nullSNI, server_name ve default_server sırası incelenir.
nginx -T | grep -nE 'listen .*443|server_name|ssl_certificate'Origin sertifikası doğrudan tarayıcı güveni için değil Cloudflare-origin bağlantısı içindir.
Origin ve proxied hostname sertifikalarını ayrı openssl komutuyla okuyun.Hosting Settings ve mail/panel sertifika atamaları ayrı kontrol edilir.
plesk bin certificate --list -domain example.comSertifika ile ssl_certificate_key dosyasının aynı anahtar çiftine ait olmadığını gösterir.
Sunucu sertifikasıyla gerekli intermediate sertifikaları birlikte sunar; istemcinin güven zincirini tamamlamasına yardımcı olur.
SNI server_name eşleşmesi, default SSL vhost veya listen sırası yanlış olduğunda başka vhost sertifikası sunulabilir.
NGINX farklı dosya yolunu kullanıyor, reload edilmemiş veya CDN eski sertifikayı sunuyor olabilir.
Hayır. Botlar, eski istemciler ve uyumsuz TLS teklifleri de bu logu üretebilir; frekans ve istemci bilgisi incelenmelidir.
Private key’i göstermeden her iki dosyadan public key çıkarıp SHA-256 hash değerlerini karşılaştırabilirsiniz.
Domain hosting, panel hostname ve mail hizmeti sertifikaları ayrı atanabilir; her endpoint canlı olarak doğrulanmalıdır.
cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.