Nginx'te SSL kurulumu üç dosyaya ve birkaç yönergeye dayanır: sunucu sertifikası, ara sertifikalar ve özel anahtar. Sertifika ile ara sertifikaları tek dosyada (fullchain) birleştirmek en sık yapılan hatayı, eksik zincir uyarısını önler.
Ön koşullar
- CA'dan gelen sunucu sertifikası ve ara (CA bundle) sertifikaları
- CSR'yi oluştururken ürettiğiniz özel anahtar
- Sunucuda 443 portunun güvenlik duvarında açık olması
Adımlar
- Sertifika ile ara sertifikayı sırayla birleştirin (önce sunucu sertifikası):
cat alanadi.crt ca_bundle.crt > /etc/nginx/ssl/alanadi-fullchain.crt chmod 600 /etc/nginx/ssl/alanadi.key - Sunucu bloğunu düzenleyin:
server { listen 443 ssl; http2 on; server_name alanadi.com www.alanadi.com; ssl_certificate /etc/nginx/ssl/alanadi-fullchain.crt; ssl_certificate_key /etc/nginx/ssl/alanadi.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_session_cache shared:SSL:10m; add_header Strict-Transport-Security "max-age=31536000" always; } server { listen 80; server_name alanadi.com www.alanadi.com; return 301 https://$host$request_uri; } - Söz dizimini sınayıp yapılandırmayı yeniden yükleyin:
nginx -t systemctl reload nginx
Eski Nginx sürümlerinde http2 on; yerine listen 443 ssl http2; yazılır.
Doğrulama
openssl s_client -connect alanadi.com:443 -servername alanadi.com
Çıktıda zincirin tamamının listelendiğini ve Verify return code: 0 (ok) satırını görmelisiniz. Ayrıca SSL kontrol aracıyla dışarıdan test edin.
Sık hatalar
- Anahtar uyuşmuyor:
key values mismatchhatası sertifikanın başka bir anahtara ait olduğunu gösterir. - Zincir eksik: Tarayıcıda çalışır ama mobil veya API istemcilerinde hata verir; fullchain dosyasını kullanın.
- Sertifika sırası yanlış: Sunucu sertifikası dosyada ilk olmalıdır.
- Karışık içerik: Sayfada http:// ile çağrılan kaynaklar kilidi bozar.
Performans ve güvenlik ince ayarı
Kurulum çalıştıktan sonra ssl_session_cache ile oturum yeniden kullanımını açmak el sıkışma yükünü azaltır. Yeterli destek varsa ssl_stapling on; ve ssl_stapling_verify on; yönergeleriyle OCSP stapling etkinleştirilebilir; bu, istemcinin sertifika durumunu ayrıca sorgulamasını gerektirmez. Sertifika yenilendiğinde yalnızca dosyaları değiştirip nginx -s reload çalıştırmanız yeterlidir, mevcut bağlantılar kesilmez. Yenileme tarihini takvime ya da izlemeye eklemeyi unutmayın.
Sertifika almadan önce CSR oluşturucuyu kullanabilir, seçenekler için SSL sertifikalarını inceleyebilirsiniz.