Nginx’te SSL Sertifikası Nasıl Kurulur: Eksiksiz Adım Adım Kılavuz
Web sitenizi bir SSL/TLS sertifikasıyla güvence altına almak artık isteğe bağlı değil — kullanıcı güveni, veri koruma ve arama motoru sıralamaları için temel bir gereksinimdir. Google, 2014’ten bu yana HTTPS’yi açıkça bir sıralama sinyali olarak kullanmaktadır ve modern tarayıcılar, bir site şifreleme içermediğinde ziyaretçileri aktif olarak uyarmaktadır. Nginx’i web sunucunuz olarak kullanıyorsanız, bu kılavuz Certbot ve Let’s Encrypt kullanarak SSL sertifika yönetimini kurmanız, yapılandırmanız ve otomatikleştirmeniz için bilmeniz gereken her şeyi ele alacaktır.
İster bir VPS Hosting ortamı, ister özel bir sunucu veya paylaşımlı hosting planı yönetiyor olun, herhangi bir üretim web sitesi için düzgün yapılandırılmış SSL vazgeçilmezdir.
SSL Sertifikası Nedir ve Nginx Neden Buna İhtiyaç Duyar?
Bir SSL (Secure Sockets Layer) sertifikası — bugün daha doğru bir şekilde TLS (Transport Layer Security) sertifikası olarak anılır — web sunucunuz ile ziyaretçinin tarayıcısı arasında şifreli bir bağlantı kurar. Bu şifreleme, oturum açma kimlik bilgileri, ödeme bilgileri ve kişisel veriler gibi hassas bilgilerin kötü niyetli üçüncü taraflarca ele geçirilememesini sağlar.
Nginx için özellikle SSL yapılandırması şunları içerir:
- Sertifika dosyaları: Bir Sertifika Otoritesi (CA) tarafından verilen genel sertifika zinciri
- Özel anahtar: Sunucunuzda güvenli bir şekilde saklanan kriptografik olarak oluşturulmuş bir anahtar
- Sunucu bloğu direktifleri: Sertifikayı alan adınıza bağlayan Nginx yapılandırma talimatları
SSL olmadan siteniz HTTP üzerinden sunulur; bu da tüm trafiğin düz metin olarak iletildiği anlamına gelir. SSL düzgün yapılandırıldığında siteniz HTTPS kullanır — şifreli, kimliği doğrulanmış ve tarayıcılar ile arama motorları tarafından güvenilen.
> Profesyonel ipucu: Hosting seçeneklerini değerlendiriyorsanız, AlexHost; Domain Validation (DV), Organization Validation (OV) ve Extended Validation (EV) sertifikaları dahil olmak üzere her türlü alan adı için SSL Sertifikaları sunmaktadır.
Başlamadan Önce Ön Koşullar
Yapılandırma adımlarına geçmeden önce aşağıdaki koşulların sağlandığından emin olun:
- Linux tabanlı bir sistemde (Ubuntu 20.04/22.04 veya Debian önerilir) çalışan bir Nginx web sunucusu
- Sunucunuza root veya sudo erişimi
- DNS A kayıtları aracılığıyla sunucunuzun IP adresine yönlendirilen kayıtlı bir alan adı — Alan Adı Kaydı üzerinden bir tane kaydedebilirsiniz
- Açık güvenlik duvarı portları: TCP portları 80 (HTTP) ve 443 (HTTPS) erişilebilir olmalıdır
- sudo ayrıcalıklarına sahip root olmayan bir kullanıcı (sunucu güvenliği için en iyi uygulama)
Nginx’in çalıştığını şu komutla doğrulayabilirsiniz:
sudo systemctl status nginxAlan adınızın doğru çözümlendiğini şu komutla onaylayın:
dig yourdomain.com +shortAdım 1: Sunucunuza Certbot’u Kurun
Certbot, Let’s Encrypt için resmi, açık kaynaklı istemcidir — ücretsiz, otomatik ve yaygın olarak güvenilen bir Sertifika Otoritesi. Alan adı doğrulama ve Nginx yapılandırma güncellemeleri dahil olmak üzere sertifika verme sürecinin tamamını yönetir.
Paket Dizininizi Güncelleyin
Mevcut en son sürümleri kurduğunuzdan emin olmak için her zaman paket listelerinizi yenileyerek başlayın:
sudo apt update && sudo apt upgrade -yCertbot ve Nginx Eklentisini Kurun
python3-certbot-nginx eklentisi, Certbot’un Nginx yapılandırma dosyalarını doğrudan okumasına ve değiştirmesine olanak tanıyarak kurulum sürecinin büyük bölümünü otomatikleştirir:
sudo apt install certbot python3-certbot-nginx -yKurulumu Doğrulayın
Certbot’un sürümünü kontrol ederek başarıyla kurulduğunu onaylayın:
certbot --versioncertbot 2.x.x benzeri bir çıktı görmelisiniz.
Adım 2: Güvenlik Duvarı Üzerinden HTTPS Trafiğine İzin Verin
UFW (Uncomplicated Firewall) kullanıyorsanız, devam etmeden önce HTTPS trafiğine açıkça izin vermeniz gerekir:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw statusNginx Full profili hem HTTP (port 80) hem de HTTPS (port 443)’e izin verir. Bağımsız HTTP kuralının kaldırılması, SSL yapılandırıldıktan sonra gereksiz portları amaçsız açık bırakmamanızı sağlar.
Adım 3: Let’s Encrypt’ten SSL Sertifikanızı Alın
Certbot kurulu ve güvenlik duvarınız yapılandırılmış durumdayken artık bir sertifika talep edebilirsiniz. --nginx bayrağı, Certbot’a ACME meydan okuma doğrulamasını otomatik olarak yöneten ve sunucu yapılandırmanızı güncelleyen Nginx eklentisini kullanmasını söyler.
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comBu Süreçte Neler Olur?
- Alan adı sahipliği doğrulaması: Certbot, Let’s Encrypt’e alan adını kontrol ettiğinizi kanıtlamak için bir meydan okuma dosyası sunmak amacıyla Nginx yapılandırmanızı geçici olarak değiştirir
- Sertifika verilmesi: Let’s Encrypt, 90 gün geçerli imzalı bir sertifika verir
- Otomatik Nginx yapılandırması: Certbot, yeni sertifika dosyalarını kullanmak için Nginx sunucu bloğunuzu günceller
Etkileşimli İstemler
Süreç boyunca Certbot şunları soracaktır:
- Acil yenileme ve güvenlik bildirimleri için bir e-posta adresi
- Hizmet Koşullarını kabul etme
- HTTP’yi HTTPS’ye yönlendirip yönlendirmeyeceğiniz — site genelinde HTTPS’yi zorunlu kılmak için her zaman seçenek 2 (Yönlendir)‘i seçin
Sertifikalarınız şu konumda saklanacaktır:
/etc/letsencrypt/live/yourdomain.com/Temel dosyalar şunlardır:
| Dosya | Amaç |
|---|---|
fullchain.pem | Sertifikanız + ara zincir |
privkey.pem | Özel anahtarınız (bunu gizli tutun) |
cert.pem | Yalnızca alan adı sertifikanız |
chain.pem | Yalnızca ara sertifikalar |
Adım 4: Nginx’i SSL için Manuel Olarak Yapılandırın (Gelişmiş)
Certbot yapılandırmanın büyük bölümünü otomatikleştirse de manuel kurumu anlamak, SSL uygulamanız üzerinde tam kontrol sağlar — performans ayarı, güvenlik sertleştirme ve özel dağıtımlar için gereklidir.
Nginx Sunucu Bloğu Yapılandırmanızı Açın
sudo nano /etc/nginx/sites-available/yourdomain.comVarsayılan yapılandırma dosyasını kullanıyorsanız:
sudo nano /etc/nginx/sites-available/defaultEksiksiz SSL Sunucu Bloğu Yapılandırması
Yapılandırmanızı aşağıdaki sertleştirilmiş örnekle değiştirin veya güncelleyin:
# Redirect all HTTP traffic to HTTPS
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
# HTTPS server block
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL Certificate Paths
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# Recommended SSL parameters
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Security Headers
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";
# Document root and index
root /var/www/yourdomain.com/html;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
}Temel Yapılandırma Direktiflerinin Açıklaması
ssl_protocols TLSv1.2 TLSv1.3: Eski, güvenlik açığı bulunan protokolleri devre dışı bırakır (SSLv3, TLS 1.0, TLS 1.1)ssl_ciphers: İleri gizliliği önceliklendiren güçlü bir şifre paketi belirtirssl_stapling on: SSL el sıkışma gecikmesini azaltarak OCSP zımbalama özelliğini etkinleştirirStrict-Transport-Security: Tarayıcılara alan adınız için her zaman HTTPS kullanmalarını söyler (HSTS)http2: HTTPS bağlantılarında gelişmiş performans için HTTP/2’yi etkinleştirir
Adım 5: Nginx Yapılandırmanızı Test Edin
Nginx’i yeniden başlatmadan önce, sitenizi çevrimdışı bırakabilecek hataları yakalamak için her zaman yapılandırma sözdizimini doğrulayın:
sudo nginx -tBaşarılı bir test şunu döndürür:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulHatalarla karşılaşırsanız çıktıyı dikkatlice inceleyin — Nginx, sorunun bulunduğu dosyayı ve satır numarasını gösterecektir.
Adım 6: Değişiklikleri Uygulamak için Nginx’i Yeniden Başlatın
Yapılandırma testi geçtikten sonra Nginx’i yeniden yükleyin veya yeniden başlatın:
# Graceful reload (preferred for production — no downtime)
sudo systemctl reload nginx
# Full restart (use if reload doesn't apply all changes)
sudo systemctl restart nginxYeniden başlatmanın ardından Nginx’in doğru çalıştığını doğrulayın:
sudo systemctl status nginxAdım 7: Otomatik SSL Sertifika Yenilemeyi Ayarlayın
Let’s Encrypt sertifikaları 90 gün sonra sona erer. Bu kısa geçerlilik süresi kasıtlıdır — güvenliği ihlal edilmiş sertifikalardan kaynaklanan zararı sınırlar ve otomasyonu teşvik eder. Certbot, yenilemeleri yönetmek için otomatik olarak bir systemd zamanlayıcısı (veya cron görevi) kurar, ancak bunu doğrulamanız ve test etmeniz gerekir.
Mevcut Yenileme Zamanlayıcısını Kontrol Edin
sudo systemctl status certbot.timerZamanlayıcının aktif olduğunu ve günde iki kez çalışacak şekilde planlandığını görmelisiniz.
Yenileme Sürecini Test Edin
Herhangi bir sertifikayı gerçekten değiştirmeden bir yenilemeyi simüle edin:
sudo certbot renew --dry-runBaşarılı çıktı şunu içerecektir:
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)Nginx’i Yeniden Yüklemek için Yenileme Sonrası Kanca Ekleyin
Certbot, bir dağıtım kancası yapılandırmadığınız sürece sertifikaları yeniledikten sonra Nginx’i otomatik olarak yeniden yüklemez. Şu komutla bir tane oluşturun:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shAşağıdaki içeriği ekleyin:
#!/bin/bash
systemctl reload nginxÇalıştırılabilir yapın:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shBu, her başarılı yenilemeden hemen sonra Nginx’in yeni sertifika dosyalarını yüklemesini sağlar.
Adım 8: SSL Kurulumunuzu Doğrulayın
Kurulumu tamamladıktan sonra bu yöntemleri kullanarak SSL yapılandırmanızı doğrulayın:
Tarayıcı Kontrolü
Tarayıcınızda https://yourdomain.com adresine gidin. Adres çubuğunda güvenli bir bağlantıyı gösteren bir kilit simgesi görmelisiniz.
Çevrimiçi SSL Test Araçları
SSL yapılandırma kalitenizi denetlemek için bu ücretsiz araçları kullanın:
- SSL Labs (Qualys):
https://www.ssllabs.com/ssltest/— Harf notu sağlar (A veya A+ hedefleyin) - Security Headers:
https://securityheaders.com/— HTTP güvenlik başlıklarınızı denetler - HSTS Preload:
https://hstspreload.org/— HSTS ön yükleme uygunluğunu kontrol eder
Komut Satırı Doğrulaması
# Check certificate details
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
# Check certificate expiry date
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -datesNginx’teki Yaygın SSL Sorunlarını Giderme
| Sorun | Olası Neden | Çözüm |
|---|---|---|
ERR_SSL_PROTOCOL_ERROR | Nginx port 443’ü dinlemiyor | listen 443 ssl; direktifini ve güvenlik duvarı kurallarını kontrol edin |
NET::ERR_CERT_AUTHORITY_INVALID | fullchain.pem yerine cert.pem kullanılıyor | fullchain.pem kullanmak için ssl_certificate‘i güncelleyin |
| Sertifika yenilenmiyor | Certbot zamanlayıcısı devre dışı veya port 80 engelli | sudo certbot renew --dry-run komutunu çalıştırın ve günlükleri kontrol edin |
| Karışık içerik uyarıları | HTTPS sayfasında HTTP kaynakları yükleniyor | Tüm dahili bağlantıları ve varlık URL’lerini HTTPS olarak güncelleyin |
SSL_ERROR_RX_RECORD_TOO_LONG | HTTP trafiği HTTPS portuna geliyor | Port 80’den 443’e yönlendirmenin yapılandırıldığından emin olun |
SSL için Doğru Hosting Ortamını Seçme
SSL uygulamanızın performansı ve güvenilirliği büyük ölçüde hosting ortamınıza bağlıdır. İşte hızlı bir genel bakış:
- VPS Hosting: Tam root erişimi, Nginx yapılandırması, SSL parametreleri ve sertifika yönetimi üzerinde tam kontrol sağlar — bu kılavuz için idealdir
- Dedicated Servers: Kurumsal düzeyde SSL yapılandırmaları gerektiren yüksek trafikli siteler için maksimum performans ve yalıtım
- Shared Web Hosting: SSL genellikle bir kontrol paneli aracılığıyla yönetilir; Certbot manuel yapılandırması mevcut olmayabilir
- VPS with cPanel: VPS düzeyinde kontrolü korurken grafik arayüz üzerinden SSL yönetimini basitleştirir
SSL yığınları üzerinde tam kontrol isteyen geliştiriciler ve sistem yöneticileri için VPS veya özel sunucu önerilen seçimdir.
Sonuç
Nginx’te SSL kurmak çok adımlı bir süreçtir, ancak her adım kritik bir amaca hizmet eder — trafiği şifrelemek ve alan adı sahipliğini doğrulamaktan şifre yapılandırmanızı sertleştirmeye ve yenilemeleri otomatikleştirmeye kadar. Bu kılavuzu takip ederek şunları uyguladınız:
✅ Let’s Encrypt ve Certbot aracılığıyla ücretsiz, güvenilir bir SSL sertifikası
✅ Modern TLS protokolleriyle sertleştirilmiş bir Nginx SSL yapılandırması
✅ Tüm trafik için HTTP’den HTTPS’ye yönlendirme
✅ Gelişmiş el sıkışma performansı için OCSP zımbalama
✅ Derinlemesine savunma için HSTS ve güvenlik başlıkları
✅ Nginx yeniden yükleme kancalarıyla otomatik sertifika yenileme
Düzgün yapılandırılmış bir SSL sertifikası yalnızca kullanıcılarınızı korumakla kalmaz — güven oluşturur, SEO sıralamalarınızı iyileştirir ve herhangi bir profesyonel web varlığı için temel bir gerekliliktir. SSL güvenlikli Nginx sunucunuzu barındırmak için güvenilir bir altyapı arıyorsanız, güvenliği ciddiye alan geliştiriciler ve işletmeler için özel olarak tasarlanmış AlexHost’un VPS Hosting planlarını inceleyin.
