Ubuntu’da Let’s Encrypt SSL ile Nginx’i Güvenli Hale Getirme (Tam 2025 Rehberi)
HTTPS artık isteğe bağlı değildir. 2025’te, her web sitesinin SSL/TLS şifrelemesine ihtiyacı vardır — sadece kullanıcı verilerini korumak için değil, aynı zamanda Google Search’te rekabetçi bir şekilde sıralanmak ve modern tarayıcı güvenlik gereksinimlerini karşılamak için. Let’s Encrypt bunu ücretsiz olarak mümkün kılarak, Ubuntu’da Nginx ile sorunsuz bir şekilde çalışan güvenilir, otomatik yenilenen SSL sertifikaları sunmaktadır.
Bu kapsamlı rehber, her adımda size yol gösterir: Certbot’u yüklemek, Let’s Encrypt SSL sertifikası almak, yapılandırmanızı doğrulamak ve yenilemeleri otomatikleştirmek — hepsi Ubuntu 18.04, 20.04 veya 22.04 sunucusunda Nginx çalıştıran ortamda.
VPS Hosting ortamını veya özel bir web sunucusunu yönetiyor olsanız da, bu eğitim size 15 dakikadan kısa sürede üretime hazır bir HTTPS kurulumu sağlar.
Nginx için SSL Neden Önemlidir 2025’te
Komutlara geçmeden önce, Nginx’i Let’s Encrypt ile güvence altına alarak ne kazandığınızı anlamak değerlidir:
- Veri şifreleme: HTTPS, sunucunuz ile ziyaretçileriniz arasındaki tüm trafiği şifreler, ortadaki adam saldırılarını ve dinlemeyi önler.
- SEO sıralama sinyalleri: Google, HTTPS’yi bir sıralama faktörü olarak onaylamıştır. SSL olmayan siteler arama sonuçlarında aktif olarak cezalandırılır.
- Tarayıcı güven göstergeleri: Chrome, Firefox ve Edge, HTTP siteleri için “Güvenli Değil” uyarıları gösterir, kullanıcı güvenini yok eder ve hızlı çıkış oranlarını artırır.
- Ücretsiz ve otomatik: Let’s Encrypt sertifikaları hiçbir maliyetle yayınlar ve Certbot yenilemeleri otomatik olarak işler — ücretli sertifikaların manuel yükünü ortadan kaldırır.
- PCI DSS ve uyum: Ödeme veya kişisel veriler işleyen herhangi bir site, yasal olarak şifreli bağlantılar kullanması gerekir.
Etki alanınız zaten kayıtlıysa ve sunucunuza işaret ediyorsa, başlamaya hazırsınız. Hala bir etki alanına ihtiyacınız varsa, AlexHost uygun fiyatlı Alan Adı Kaydı ve anında DNS yönetimi sunar.
Ön Koşullar
Devam etmeden önce aşağıdaki koşulların karşılandığından emin olun:
| Gereksinim | Ayrıntılar |
|---|---|
| İşletim Sistemi | Ubuntu 18.04, 20.04 veya 22.04 LTS |
| Web Sunucusu | Nginx yüklü ve sitenizi aktif olarak sunuyor |
| Alan Adı | Sunucunuzun genel IP’sine işaret eden A kaydı olan kayıtlı bir alan adı |
| Sunucu Erişimi | SSH erişimi ve sudo ayrıcalıklarına sahip bir kullanıcı |
| Güvenlik Duvarı | UFW veya iptables’da 80 (HTTP) ve 443 (HTTPS) portları açık |
| Root Erişimi | Kesinlikle gerekli değil, ancak sudo erişimi zorunlu |
Nginx’in Çalışıp Çalışmadığını Doğrulayın
Certbot’u yüklemeden önce Nginx’in aktif olduğunu doğrulayın:
sudo systemctl status nginxÇıktıda active (running) görmelisiniz. Nginx yüklü değilse, şunu çalıştırın:
sudo apt update && sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginxGerekli Güvenlik Duvarı Portlarını Açın
UFW etkinse, HTTP ve HTTPS trafiğine izin verin:
sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw statusÇıktı, hem IPv4 hem de IPv6 için Nginx Full olarak ALLOW göstermelidir.
Adım 1 — Certbot ve Nginx Eklentisini Yükleme
Certbot, resmi Let’s Encrypt istemcisidir. Sertifika yaşam döngüsünün tamamını otomatikleştirir: verme, yükleme ve yenileme. python3-certbot-nginx eklentisi, Certbot’un Nginx yapılandırmanızı okumasına ve otomatik olarak değiştirmesine izin verir.
Paket İndeksinizi Güncelleyin
Yeni yazılım yüklemeden önce her zaman paket listelerinizi güncelleyin:
sudo apt update
sudo apt upgrade -yCertbot’u Nginx Eklentisiyle Yükleyin
sudo apt install certbot python3-certbot-nginx -yYüklemeyi Doğrulayın
certbot --versionBeklenen çıktı (sürüm değişebilir):
certbot 2.x.x> Ubuntu 18.04 kullanıcıları için not: Varsayılan APT sürümü Certbot güncel değilse, en son sürüm için Snap aracılığıyla yükleyin:
> “`bash
> sudo snap install –classic certbot
> sudo ln -s /snap/bin/certbot /usr/bin/certbot
> “`
Adım 2 — Nginx Server Block’unuzu Yapılandırma
Certbot, Nginx yapılandırmasında alan adınızı otomatik olarak değiştirmek için algılaması gerekir. Henüz alan adınız için bir server block oluşturmadıysanız, şimdi bunu yapın.
Server Block Oluşturma
Bu kılavuz boyunca yourdomain.com yerine gerçek alan adınızı yazın:
sudo nano /etc/nginx/sites-available/yourdomain.comAşağıdaki temel yapılandırmayı ekleyin:
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/html;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
}Server Block’u Etkinleştirme
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/Nginx Yapılandırmasını Test Etme
Yeniden yüklemeden önce her zaman Nginx yapılandırmanızı doğrulayın:
sudo nginx -tBeklenen çıktı:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulNginx’i Yeniden Yükleyin
sudo systemctl reload nginxAdım 3 — Let’s Encrypt SSL Sertifikası Alma
Nginx yapılandırıldı ve Certbot yüklendi, artık SSL sertifikanızı talep edebilirsiniz.
Certbot’u Nginx Eklentisiyle Çalıştırın
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comBayrakları açıklama:
--nginx— Certbot’a otomatik yapılandırma için Nginx eklentisini kullanmasını söyler-d yourdomain.com— Birincil etki alanını belirtir-d www.yourdomain.com—wwwalt etki alanını aynı sertifikaya ekler (Konu Alternatif Adı)
Etkileşimli İstemler Açıklandı
Certbot sizi kısa bir kurulum sihirbazında yönlendirecektir:
1. E-posta Adresi
Enter email address (used for urgent renewal and security notices):Geçerli bir e-posta sağlayın. Let’s Encrypt bunu sertifika sona erme ve güvenlik sorunları hakkında sizi bilgilendirmek için kullanır.
2. Hizmet Şartları
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf
(A)gree/(C)ancel:A yazın ve Enter tuşuna basın.
3. EFF Haber Bülteni (İsteğe Bağlı)
Would you be willing to share your email address with the Electronic Frontier Foundation?
(Y)es/(N)o:Bu isteğe bağlıdır. Abone olmamayı tercih ederseniz N yazın.
4. HTTP’den HTTPS’ye Yönlendirme
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect
2: Redirect - Make all requests redirect to secure HTTPS accessHer zaman seçenek 2’yi seçin. Bu, tüm ziyaretçilerin otomatik olarak HTTPS’ye yükseltilmesini sağlar, karışık içerik sorunlarını ortadan kaldırır ve güvenlik duruşunu iyileştirir.
Başarılı Çıktı
Her şey doğru yapılandırılmışsa şunu göreceksiniz:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/yourdomain.com/privkey.pem
This certificate expires on YYYY-MM-DD.
These files will be updated when the certificate renews.
Deploying certificate
Successfully deployed certificate for yourdomain.com to /etc/nginx/sites-available/yourdomain.com
Successfully deployed certificate for www.yourdomain.com to /etc/nginx/sites-available/yourdomain.com
Congratulations! You have successfully enabled HTTPS on https://yourdomain.com and https://www.yourdomain.comCertbot’un Nginx’te Değiştirdikleri
Çalıştırdıktan sonra, Certbot otomatik olarak SSL yönergelerini sunucu bloğunuza ekler. Yapılandırmanız artık buna benzer görünecektir:
server {
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.yourdomain.com) {
return 301 https://$host$request_uri;
}
if ($host = yourdomain.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 404;
}Adım 4 — SSL Kurulumunu Doğrulama
Certbot tamamlandıktan sonra, SSL sertifikanızın doğru şekilde kurulduğunu ve çalıştığını doğrulayın.
Yöntem 1: Tarayıcı Kontrolü
Web tarayıcınızı açın ve https://yourdomain.com adresine gidin. Şunları arayın:
- Adres çubuğundaki kilit simgesi — aktif, güvenilir bir SSL bağlantısını onaylar
- Güvenlik uyarısı yok — sertifika geçerli ve tarayıcınız tarafından güvenilir
- URL’de HTTPS — HTTP istekleri otomatik olarak HTTPS’ye yönlendirilmelidir
Kilit simgesine tıklayın ve “Sertifika”yı seçerek yayınlayıcıyı (“Let’s Encrypt” gösterilmelidir) ve son kullanma tarihini görüntüleyin.
Yöntem 2: SSL Labs Derinlemesine Analiz
Kapsamlı bir güvenlik denetimi için Qualys SSL Labs’ı kullanın:
https://www.ssllabs.com/ssltest/adresine gidin- Alan adınızı girin
- “Gönder”e tıklayın
Düzgün yapılandırılmış bir Let’s Encrypt + Nginx kurulumu A veya A+ puanı almalıdır. Daha düşük bir puan alırsanız, SSL Labs giderilmesi gereken belirli zayıflıkları belirleyecektir.
Yöntem 3: Komut Satırı Doğrulaması
Sertifika ayrıntılarını doğrudan terminalden kontrol edin:
sudo certbot certificatesÇıktı:
Found the following certs:
Certificate Name: yourdomain.com
Serial Number: abc123...
Key Type: RSA
Domains: yourdomain.com www.yourdomain.com
Expiry Date: YYYY-MM-DD HH:MM:SS+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/yourdomain.com/privkey.pemYöntem 4: OpenSSL Komutu
OpenSSL kullanarak sertifika zincirini ve son kullanma tarihini doğrulayın:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -issuerBeklenen çıktı:
notBefore=Mon Jan 1 00:00:00 2025 GMT
notAfter=Tue Apr 1 00:00:00 2025 GMT
issuer=C=US, O=Let's Encrypt, CN=R11Adım 5 — Otomatik Sertifika Yenilemeyi Ayarlama
Let's Encrypt sertifikaları 90 gün sonra sona erer. Bu kısa geçerlilik süresi kasıtlıdır — özel anahtar tehlikeye girerse maruziyeti sınırlar. Certbot yenilemeleri otomatik olarak işler, ancak otomasyonun doğru çalışıp çalışmadığını doğrulamalısınız.
Certbot Yenileme Nasıl Çalışır
Certbot'u APT veya Snap aracılığıyla yüklediğinizde, otomatik olarak günde iki kez çalışan bir systemd timer (veya eski sistemlerde cron işi) oluşturur. Herhangi bir sertifikanın sona ermesine 30 gün kaldı mı diye kontrol eder ve bunları otomatik olarak yeniler.
Systemd Timer'ı Doğrulayın
sudo systemctl status certbot.timerBeklenen çıktı:
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since ...
Trigger: ...
Triggers: ● certbot.serviceTimer etkinse ve etkinleştirilmişse, otomatik yenileme zaten yapılandırılmıştır.
Yenileme İşlemini Test Edin (Kuru Çalıştırma)
Otomatik yenilemeye güvenmeden önce, her şeyin çalışıp çalışmadığını doğrulamak için simüle edin:
sudo certbot renew --dry-runBaşarılı çıktı:
Simulating renewal of an existing certificate for yourdomain.com and www.yourdomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Kuru çalıştırma başarılı olursa, sertifikalarınız herhangi bir manuel müdahale olmadan otomatik olarak yenilenir.
Cron İşini Doğrulayın (Eski Sistemler)
Systemd timer'ları kullanmayan eski Ubuntu sürümlerinde Certbot cron işini kontrol edin:
sudo cat /etc/cron.d/certbotŞuna benzer bir satır görmelisiniz:
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renewBu, Let's Encrypt sunucularını aşırı yüklemekten kaçınmak için günde iki kez rastgele aralıklarla Certbot'u çalıştırır.
Manuel Yenileme (Gerekirse)
Yenilemeyi manuel olarak zorlamanız gerekirse:
sudo certbot renew --force-renewal
sudo systemctl reload nginx> En iyi uygulama: Herhangi bir sertifika yenilendikten sonra (manuel veya otomatik), Nginx'in yeni sertifika dosyalarını almasını sağlamak için yeniden yükleyin:
> “`bash
> sudo systemctl reload nginx
> “`
> Certbot'un yenileme kancaları bunu çoğu yapılandırmada otomatik olarak işler.
Yenileme Kancalarını Yapılandırın
Her yenilendikten sonra Nginx'in otomatik olarak yeniden yüklenmesini sağlamak için bir dağıtım kancası ekleyin:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shAşağıdaki içeriği ekleyin:
#!/bin/bash
systemctl reload nginxBunu çalıştırılabilir yapın:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shYaygın Sorunları Giderme
Hata: "Could not bind to IPv4/IPv6"
Certbot, etki alanı doğrulaması için port 80’i kullanır. Port 80’i başka bir işlem kullanıyorsa, challenge başarısız olur.
Çözüm: Nginx’i geçici olarak durdurun, sertifikayı standalone modunda alın, ardından yeniden başlatın:
sudo systemctl stop nginx
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
sudo systemctl start nginxHata: "DNS problem: NXDOMAIN looking up A for yourdomain.com"
Etki alanınızın DNS kayıtları henüz Let’s Encrypt’in doğrulama sunucularına yayılmamıştır.
Çözüm: A kaydınızın doğru şekilde ayarlandığını doğrulayın:
dig yourdomain.com A +shortÇıktı, sunucunuzun genel IP adresini döndürmelidir. DNS yayılması 48 saate kadar sürebilir, ancak genellikle 1-2 saat içinde çözülür.
Hata: "Too many certificates already issued"
Let’s Encrypt, etki alanı başına haftada 5 yinelenen sertifika için bir hız sınırı uygular.
Çözüm: Kurulumunuzu hız sınırlarına çarpmadan test etmek için --staging bayrağını kullanın:
sudo certbot --nginx --staging -d yourdomain.com -d www.yourdomain.comTest tamamlandıktan sonra, staging sertifikasını iptal edin ve bir üretim sertifikası yayınlayın.
Hata: "Nginx configuration test failed"
Certbot, Nginx yapılandırmanızı değiştirir. Ortaya çıkan yapılandırmanın söz dizimi hataları varsa, Nginx yeniden yüklenmez.
Çözüm: Yapılandırmayı manuel olarak test edin ve düzeltin:
sudo nginx -t
sudo nano /etc/nginx/sites-available/yourdomain.com
# Fix any syntax errors, then:
sudo systemctl reload nginxSertifika Otomatik Olarak Yenilenmiyorsa
Certbot yüklü olmasına rağmen sona erme uyarı e-postaları alıyorsanız, zamanlayıcı durumunu kontrol edin:
sudo systemctl status certbot.timer
sudo journalctl -u certbot.service --since "7 days ago"Hataları gözden geçirin ve buna göre çözün.
Gelişmiş: Nginx SSL Yapılandırmanızı Güçlendirme
Varsayılan Let’s Encrypt + Certbot yapılandırması güvenlidir, ancak A+ SSL Labs puanı için bunu daha da güçlendirebilirsiniz.
HTTP/2’yi Etkinleştirin
Geliştirilmiş performans için HTTP/2’yi etkinleştirmek üzere sunucu bloğunuzu düzenleyin:
listen 443 ssl http2;
listen [::]:443 ssl http2;HSTS (HTTP Strict Transport Security) Ekleyin
HSTS, tarayıcılara bir kullanıcı http:// yazsa bile etki alanınız için her zaman HTTPS kullanmasını söyler:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;Zayıf Protokolleri ve Şifreleri Devre Dışı Bırakın
Bu yönergeleri nginx.conf veya sunucu bloğunuza ekleyin:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;Değişiklik yaptıktan sonra her zaman test edin ve yeniden yükleyin:
sudo nginx -t && sudo systemctl reload nginxNginx + SSL Kurulumunuz için Doğru Hosting’i Seçmek
SSL ile güvenli hale getirilmiş Nginx sunucunuzun performansı ve güvenilirliği, temel altyapıya büyük ölçüde bağlıdır. AlexHost’un hosting seçeneklerinin farklı kullanım durumlarıyla nasıl uyumlu olduğu aşağıda verilmiştir:
- VPS Hosting — Çoğu web sitesi ve uygulama için idealdir. Tam root erişimi, Nginx ve Certbot’u bu kılavuzda açıklandığı şekilde yapılandırmanıza olanak tanır. AlexHost VPS planları Ubuntu 18.04, 20.04 ve 22.04 LTS üzerinde çalışır.
- Dedicated Servers — Maksimum performans, özel kaynaklar ve tam donanım kontrolü gerektiren yüksek trafikli web siteler için en iyisidir. Her biri kendi Let’s Encrypt sertifikasına sahip birden fazla Nginx sanal ana bilgisayarı çalıştırın.
- cPanel ile VPS — SSL sertifikalarını web hosting’iniz ile birlikte yönetmek için grafik arayüzü tercih ederseniz, cPanel Let’s Encrypt ile entegre olur ve AutoSSL özelliği aracılığıyla sertifika düzenlemesini yönetir.
- SSL Sertifikaları — Kurumsal ortamlar, e-ticaret siteleri veya genişletilmiş doğrulama (EV) veya kuruluş doğrulaması (OV) sertifikaları gerektiren uygulamalar için AlexHost, garanti kapsamı ve özel destek ile premium SSL sertifikaları sunar.
Sonuç
Ubuntu üzerinde Nginx’i Let’s Encrypt SSL sertifikası ile güvence altına almak, kullanıcılarınızı korumak, arama motoru sıralamalarınızı iyileştirmek ve izleyicilerinizle güven oluşturmak için alabileceğiniz en etkili adımlardan biridir. Tüm süreç — Certbot’u kurmaktan otomatik yenilemeleri etkinleştirmeye kadar — 15 dakikadan az sürer ve hiçbir maliyeti yoktur.
Bu kılavuzda başardıklarınızı özetlemek gerekirse:
- ✅ Certbot ve Nginx eklentisini yüklediniz
- ✅ Etki alanınız için uygun bir Nginx sunucu bloğu yapılandırdınız
- ✅ Güvenilir bir Let’s Encrypt SSL sertifikası aldınız
- ✅ Sertifikayı tarayıcı araçları, SSL Labs ve OpenSSL kullanarak doğruladınız
- ✅ systemd timer ve dry-run testi aracılığıyla otomatik yenilemeyi onayladınız
- ✅ A+ güvenlik derecelendirmesi için gelişmiş sertleştirme uyguladınız
Nginx sunucunuz artık güvence altında olduğuna göre, ek koruma katmanlarını keşfetmeyi düşünün: Web Application Firewall (WAF), brute-force saldırılarına karşı fail2ban ve düzenli güvenlik denetimleri. Birden fazla etki alanı veya uygulamayı yönetiyorsanız, AlexHost’un VPS Kontrol Panelleri Linux ortamının esnekliğinden ödün vermeden SSL sertifikalarını, sanal ana bilgisayarları ve sunucu yapılandırmalarını yönetmek için kolaylaştırılmış bir arayüz sağlar.
Kullanıcılarınız güvenli bir bağlantıya layık. Şimdi onlara sahip.
tasarruf edin