Nginx’i Let’s Encrypt ile CentOS 7 Üzerinde Güvenli Hale Getirme Rehberi
Nginx, yüksek performanslı ve ölçeklenebilir bir web sunucusu olmasının yanı sıra, ters proxy, yük dengeleyici ve HTTP önbelleği olarak da yaygın olarak kullanılan güçlü bir araçtır. Günümüz internet dünyasında, kullanıcı verilerinin güvenliği ve web sitelerinin bütünlüğü, her zamankinden daha kritik bir öneme sahiptir. Bu bağlamda, web trafiğini şifrelemek için SSL/TLS sertifikaları kullanmak bir zorunluluk haline gelmiştir. Let’s Encrypt, ücretsiz, otomatik ve açık bir sertifika yetkilisi (CA) olarak, bu gereksinimi karşılamak için mükemmel bir çözüm sunar. Bu kapsamlı rehberde, CentOS 7 işletim sistemi üzerinde çalışan bir Nginx web sunucusunu Let’s Encrypt sertifikaları ile nasıl güvenli hale getireceğinizi adım adım öğreneceksiniz.
Giriş
İnternet üzerindeki bilgi alışverişinin büyük bir kısmı, hassas verileri (parolalar, kredi kartı bilgileri, kişisel veriler vb.) içerir. Bu verilerin kötü niyetli kişiler tarafından ele geçirilmesini engellemek için, tarayıcı ile sunucu arasındaki iletişimin şifrelenmesi gerekmektedir. İşte bu noktada SSL/TLS devreye girer.
Neden SSL/TLS?
SSL (Secure Sockets Layer) ve onun daha modern ve güvenli halefi olan TLS (Transport Layer Security), internet üzerinden gönderilen verilerin şifrelenmesini sağlayan kriptografik protokollerdir. Bir web sitesi SSL/TLS ile güvence altına alındığında, tarayıcı adres çubuğunda “https://” ön eki ve bir kilit simgesi görünür. Bu durum, kullanıcıya siteye gönderdiği bilgilerin üçüncü şahıslar tarafından okunmasının veya değiştirilmesinin zor olduğunu gösterir. SSL/TLS kullanmamanın getirdiği riskler şunlardır:
* Veri Hırsızlığı: Kullanıcı adı, parola, kredi kartı numaraları gibi hassas veriler, ağ üzerinden düz metin olarak iletilir ve dinlemeye açık hale gelir.
* Veri Bütünlüğünün İhlali: Kötü niyetli kişiler, sunucu ile tarayıcı arasındaki iletişimi değiştirebilir, zararlı kodlar enjekte edebilir veya içeriği tahrif edebilir.
* Güven Kaybı: Modern tarayıcılar, SSL/TLS kullanmayan siteleri “Güvenli Değil” olarak işaretler. Bu durum, kullanıcıların sitenize olan güvenini zedeler ve potansiyel ziyaretçileri uzaklaştırır.
* SEO Dezavantajı: Google gibi arama motorları, HTTPS kullanan sitelere arama sıralamalarında öncelik vermektedir.
Neden Let’s Encrypt?
Geleneksel SSL/TLS sertifikaları genellikle yıllık ücretler gerektirir ve kurulum süreçleri karmaşık olabilir. Let’s Encrypt, bu engelleri ortadan kaldırarak SSL/TLS şifrelemesini herkes için erişilebilir hale getirmiştir. Let’s Encrypt’in başlıca avantajları şunlardır:
* Ücretsiz: Sertifikalar tamamen ücretsizdir.
* Otomatik: Certbot gibi araçlar sayesinde sertifika alma ve yenileme süreçleri otomatikleştirilebilir.
* Açık: Açık standartlar üzerine kuruludur ve şeffaftır.
* Yaygın Kabul: Tüm büyük tarayıcılar tarafından tanınır ve güvenilir bulunur.
Neden CentOS 7 ve Nginx?
CentOS 7, kararlılığı, güvenilirliği ve geniş topluluk desteği ile kurumsal düzeyde sunucular için popüler bir Linux dağıtımıdır. Nginx ise hafif yapısı, yüksek performansı ve eşzamanlı bağlantıları etkili bir şekilde yönetebilme yeteneği sayesinde özellikle yüksek trafikli web siteleri için ideal bir seçimdir. Bu ikilinin kombinasyonu, güvenli ve verimli bir web sunucusu ortamı oluşturmak için güçlü bir temel sağlar.
Ön Gereksinimler
Başlamadan önce, aşağıdaki ön gereksinimlerin karşılandığından emin olmalısınız:
Sunucuya Erişim
* CentOS 7 yüklü bir sunucuya sahip olmalısınız.
* SSH aracılığıyla sunucuya root veya sudo yetkisine sahip bir kullanıcı olarak erişebilmelisiniz.
Alan Adı ve DNS Ayarları
* Nginx ile barındıracağınız bir alan adına (örn. example.com) sahip olmalısınız.
* Bu alan adının DNS kayıtları (A kaydı), sunucunuzun genel IP adresini işaret etmelidir. Bu, Let’s Encrypt’in alan adı sahipliğini doğrulayabilmesi için kritik öneme sahiptir.
* DNS değişikliklerinin internet genelinde yayılması (propagation) biraz zaman alabilir (birkaç dakika ile birkaç saat arası).
Sudo Yetkisi
* Kurulum ve yapılandırma adımları için sudo yetkisine sahip bir kullanıcı kullanmanız önerilir. Bu, root kullanıcısı olarak doğrudan çalışmaktan daha güvenlidir.
Nginx Kurulumu
CentOS 7’nin varsayılan depolarında Nginx’in eski bir sürümü bulunabilir. En güncel ve stabil sürümü kullanmak için Nginx’in kendi deposunu eklememiz önerilir.
Nginx Deposu Ekleme
Öncelikle, Nginx deposunu sistemimize eklemek için bir .repo dosyası oluşturmalıyız:
sudo yum install -y epel-release # Nginx deposu için gerekli olabilir, ancak çoğu zaman zaten kurulu
sudo nano /etc/yum.repos.d/nginx.repo
Açılan dosyaya aşağıdaki içeriği yapıştırın:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
Kaydedip dosyayı kapatın (Ctrl+X, Y, Enter).
Nginx Kurulumu ve Başlatma
Depo eklendikten sonra Nginx’i kurabiliriz:
sudo yum install -y nginx
Kurulum tamamlandıktan sonra Nginx servisini başlatın ve sistem başlangıcında otomatik olarak başlaması için etkinleştirin:
sudo systemctl start nginx
sudo systemctl enable nginx
Nginx Durumunu Kontrol Etme
Nginx’in doğru bir şekilde çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanın:
sudo systemctl status nginx
Durumun active (running) olduğunu görmelisiniz. Ayrıca, web tarayıcınızdan sunucunuzun IP adresine veya alan adına giderek varsayılan Nginx karşılama sayfasını görebilirsiniz.
Firewall Ayarları
CentOS 7, varsayılan olarak firewalld ile gelir. Nginx’in gelen HTTP (80) ve HTTPS (443) isteklerini kabul edebilmesi için bu portları güvenlik duvarında açmamız gerekir.
HTTP ve HTTPS Portlarını Açma
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Bu komutlar, HTTP (port 80) ve HTTPS (port 443) servislerine kalıcı olarak izin verir ve güvenlik duvarı ayarlarını yeniden yükler.
EPEL Deposu ve Certbot Kurulumu
Let’s Encrypt sertifikalarını almak ve yönetmek için Certbot aracını kullanacağız. Certbot, CentOS 7’nin varsayılan depolarında bulunmaz, bu yüzden onu EPEL (Extra Packages for Enterprise Linux) deposundan kurmamız gerekiyor.
EPEL Deposu Kurulumu
sudo yum install -y epel-release
Certbot Kurulumu
EPEL deposu eklendikten sonra Certbot’u kurabiliriz. Nginx ile entegre çalışacak Certbot eklentisini de kurmak önemlidir.
sudo yum install -y certbot python2-certbot-nginx
python2-certbot-nginx paketi, Certbot’un Nginx yapılandırmasını otomatik olarak düzenlemesine olanak tanır.
SSL Sertifikası Alma
Artık Nginx çalışır durumda ve Certbot yüklü olduğuna göre, alan adımız için bir SSL sertifikası alabiliriz.
Nginx için Certbot Kullanımı
Certbot, Nginx yapılandırmanızı otomatik olarak algılayıp düzenleyebilir. Bu, sertifika alma ve kurma işlemini oldukça basitleştirir.
sudo certbot --nginx -d example.com -d www.example.com
* --nginx: Certbot’a Nginx eklentisini kullanmasını söyler.
* -d example.com: Sertifika almak istediğiniz birincil alan adını belirtir.
* -d www.example.com: Sertifikaya dahil etmek istediğiniz diğer alan adlarını (örneğin www alt alan adını) belirtir. Birden fazla alan adı ekleyebilirsiniz.
Bu komutu çalıştırdığınızda, Certbot sizden bazı bilgiler isteyecektir:
1. E-posta Adresi: Acil bildirimler ve kayıp anahtar kurtarma için kullanılır.
2. Hizmet Şartlarını Kabul Etme: Let’s Encrypt’in hizmet şartlarını kabul etmeniz gerekir.
3. EFF (Electronic Frontier Foundation) Haber Bültenine Kaydolma: İsteğe bağlıdır.
Certbot, alan adı sahipliğini doğrulamak için Nginx yapılandırmanızı geçici olarak değiştirecek, sertifikaları alacak ve ardından Nginx yapılandırmanızı HTTPS’ye yönlendirme ve sertifikaları kullanacak şekilde güncelleyecektir. İşlem başarıyla tamamlandığında, Certbot size sertifikaların nerede saklandığını ve otomatik yenileme ile ilgili bilgileri gösterecektir.
Başarılı bir kurulumun ardından, tarayıcınızdan https://example.com adresine giderek sitenizin güvenli bir bağlantı üzerinden çalıştığını kontrol edebilirsiniz. Tarayıcı adres çubuğunda kilit simgesini görmelisiniz.
Sertifika Dosyalarının Konumu
Certbot tarafından alınan sertifika dosyaları genellikle /etc/letsencrypt/live/example.com/ dizininde saklanır. Bu dizin içinde aşağıdaki önemli dosyaları bulacaksınız:
* fullchain.pem: Alan adınızın sertifikasını ve ara sertifikaları (chain) içerir. Nginx yapılandırmasında bu dosyayı kullanacağız.
* privkey.pem: Alan adınızın özel anahtarını içerir. Bu dosya gizli tutulmalıdır.
* cert.pem: Yalnızca alan adınızın sertifikasını içerir.
* chain.pem: Yalnızca ara sertifikaları içerir.
Önemli: /etc/letsencrypt/live/example.com/ dizinindeki dosyalar aslında /etc/letsencrypt/archive/example.com/ dizinindeki gerçek sertifika dosyalarına sembolik bağlantılardır. Bu, Certbot’un sertifikaları yenilediğinde sembolik bağlantıları güncelleyerek Nginx yapılandırmasını değiştirmeye gerek kalmamasını sağlar.
Nginx Yapılandırması
Certbot genellikle Nginx yapılandırmasını otomatik olarak güncellese de, bazen manuel kontrol ve ek güvenlik iyileştirmeleri yapmak isteyebilirsiniz. Varsayılan Nginx yapılandırma dosyası /etc/nginx/nginx.conf veya /etc/nginx/conf.d/default.conf olabilir. En iyi uygulama, her alan adı için ayrı bir yapılandırma dosyası oluşturmaktır.
sudo nano /etc/nginx/conf.d/example.com.conf
Bu dosyanın içeriği aşağıdaki gibi olmalıdır:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
# HTTP'den HTTPS'ye yönlendirme
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
# SSL Sertifika Yolları
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Güvenlik İyileştirmeleri (aşağıdaki bölümde detaylandırılacak)
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# SSL Protokolleri ve Şifreleme Süitleri
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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# HSTS (HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s; # Google DNS sunucuları
resolver_timeout 5s;
# Diffie-Hellman parametreleri
ssl_dhparam /etc/nginx/dhparam.pem; # Bu dosyayı daha sonra oluşturacağız
root /usr/share/nginx/html; # Web sitenizin kök dizini
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# Certbot'un doğrulama dosyaları için
location ~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html; # Bu dizin, Certbot'un doğrulama dosyalarını yerleştirdiği yer olmalıdır.
}
}
Bu yapılandırma dosyasını kaydettikten sonra, Nginx yapılandırmasının sözdizimini kontrol edin ve servisi yeniden yükleyin:
sudo nginx -t
sudo systemctl reload nginx
HTTP’den HTTPS’ye Yönlendirme
Yukarıdaki yapılandırmada, ilk server bloğu HTTP (port 80) üzerinden gelen tüm istekleri HTTPS (port 443) üzerine yönlendirir. Bu, kullanıcıların sitenize yanlışlıkla HTTP üzerinden erişmeye çalışsalar bile her zaman güvenli bağlantı kullanmalarını sağlar. return 301 kalıcı bir yönlendirme olup, arama motorları için de önemlidir.
SSL Blok Ayarları
server bloğundaki listen 443 ssl http2; satırı, Nginx’in 443 portunda HTTPS ve HTTP/2 protokolleri üzerinden dinlemesini sağlar. ssl_certificate ve ssl_certificate_key direktifleri, Certbot tarafından sağlanan sertifika ve özel anahtar dosyalarının yollarını belirtir.
Sanallaştırılmış Hostlar İçin Yapılandırma
Eğer aynı Nginx sunucusunda birden fazla alan adı barındırıyorsanız (virtual hosts), her alan adı için ayrı bir .conf dosyası oluşturmanız ve her birine kendi Let’s Encrypt sertifikalarını uygulamanız gerekir. Certbot’u her alan adı için ayrı ayrı veya tek bir komutla birden fazla alan adı için çalıştırabilirsiniz.
Örneğin, sudo certbot --nginx -d site1.com -d www.site1.com -d site2.com -d www.site2.com komutu ile tek bir sertifika içinde birden fazla alan adı tanımlayabilirsiniz. Nginx yapılandırmanızda ise her server_name için ilgili sertifika yolunu belirtmeniz yeterlidir.
HSTS Yapılandırması
HTTP Strict Transport Security (HSTS), tarayıcılara, bir siteye gelecekteki tüm erişimlerin yalnızca HTTPS üzerinden yapılması gerektiğini bildiren bir güvenlik mekanizmasıdır. Bu, SSL Strip gibi saldırılara karşı koruma sağlar.
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
* max-age: Tarayıcının bu kuralı ne kadar süreyle hatırlayacağını saniye cinsinden belirtir (iki yıl için 63072000 saniye).
* includeSubDomains: Kuralın tüm alt alan adları için de geçerli olmasını sağlar.
* preload: Sitenizi HSTS preload listesine eklemek isterseniz bu anahtar kelimeyi kullanırsınız. Bu, tarayıcıların sitenize ilk kez bile olsa her zaman HTTPS ile bağlanmasını sağlar. Ancak, preload kullanmadan önce tüm alt alan adlarınızın HTTPS üzerinden erişilebilir olduğundan emin olmalısınız, aksi takdirde siteniz erişilemez hale gelebilir.
Sertifika Otomatik Yenileme
Let’s Encrypt sertifikaları 90 gün geçerlidir. Bu süre dolmadan sertifikaların otomatik olarak yenilenmesi gerekir. Certbot, bu işlemi kolaylaştıran bir renew komutuna sahiptir.
Yenileme Testi
Sertifika yenileme işleminin düzgün çalışıp çalışmadığını test etmek için:
sudo certbot renew --dry-run
Bu komut, sertifikaları yenilemez, ancak yenileme işleminin başarılı olup olmayacağını kontrol eder ve olası sorunları size bildirir. Eğer test başarılı olursa, gerçek yenileme işlemi de sorunsuz çalışacaktır.
Cron Job ile Otomatik Yenileme
Sertifikaları otomatik olarak yenilemek için bir cron job oluşturmak en yaygın yöntemdir. Certbot, zaten sisteminize bir cron job veya systemd zamanlayıcı eklemiş olabilir. Bunu kontrol etmek için:
ls -l /etc/cron.d/certbot
veya systemd için:
sudo systemctl list-timers | grep certbot
Eğer bir cron job veya systemd zamanlayıcısı yoksa, kendiniz oluşturabilirsiniz. Certbot, sertifikaları günde iki kez kontrol eden ve süresi dolmak üzere olanları yenileyen bir cron job ile gelmelidir. Varsayılan olarak, Certbot genellikle /etc/cron.d/certbot altına bir cron dosyası ekler. Bu dosya aşağıdaki gibi bir komut içerecektir:
0 /12 root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --nginx
Bu komut, her 12 saatte bir rastgele bir zaman diliminde certbot renew komutunu çalıştırır.
Eğer Certbot otomatik olarak bir cron job eklemediyse veya özelleştirmek isterseniz, kendiniz bir cron job oluşturabilirsiniz:
sudo crontab -e
Açılan dosyaya aşağıdaki satırı ekleyin:
0 0,12 * /usr/bin/certbot renew --nginx --quiet && systemctl reload nginx
Bu komut, her gün gece yarısı ve öğlen 12’de sertifikaları yenilemeye çalışır (--quiet çıktıyı bastırır). Eğer yenileme başarılı olursa, Nginx servisini yeniden yükler (systemctl reload nginx) böylece yeni sertifikalar devreye girer.
Önemli: systemctl reload nginx komutunu eklemek çok önemlidir. Aksi takdirde, sertifikalar yenilense bile Nginx eski sertifikaları kullanmaya devam edebilir.
Güvenlik İyileştirmeleri
SSL/TLS sertifikalarını kullanmak tek başına yeterli değildir. Nginx yapılandırmanızda bazı ek güvenlik iyileştirmeleri yaparak web sitenizin güvenliğini daha da artırabilirsiniz.
Zayıf TLS Sürümlerini Devre Dışı Bırakma
TLS 1.0 ve TLS 1.1 gibi eski TLS sürümleri güvenlik açıkları içerebilir. Yalnızca modern ve güvenli TLS sürümlerini (TLS 1.2 ve TLS 1.3) kullanmalısınız.
ssl_protocols TLSv1.2 TLSv1.3;
Bu satırı Nginx yapılandırmanızdaki server bloğuna ekleyin veya mevcut olanı güncelleyin.
Güçlü Şifreleme Süitleri Kullanma
Şifreleme süitleri, SSL/TLS bağlantılarında kullanılan şifreleme algoritmalarını belirler. Güçlü ve modern şifreleme süitleri kullanmak, Man-in-the-Middle (MITM) saldırılarına karşı koruma sağlar.
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
* ssl_prefer_server_ciphers on;: Nginx’in kendi şifreleme süitlerini tercih etmesini sağlar, bu da daha güvenli bir yapılandırma sunar.
OCSP Stapling
OCSP (Online Certificate Status Protocol) Stapling, sunucunun sertifika yetkilisinden (CA) bir sertifikanın iptal durumunu düzenli olarak almasını ve bunu tarayıcılara sunmasını sağlar. Bu, tarayıcıların CA’ya doğrudan bağlanma ihtiyacını ortadan kaldırır, performansı artırır ve gizliliği iyileştirir.
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s; # Google DNS sunucuları
resolver_timeout 5s;
resolver direktifi, Nginx’in OCSP yanıtlarını almak için kullanacağı DNS sunucularını belirtir.
Diffie-Hellman Parametreleri Oluşturma
Diffie-Hellman (DH) parametreleri, Perfect Forward Secrecy (PFS) sağlayan anahtar değişimi için kullanılır. Güçlü bir DH parametre dosyası oluşturmak, özellikle eski TLS sürümlerinde (TLS 1.2’den önce) anahtar değişimi güvenliğini artırır.
Öncelikle, 2048 bit veya 4096 bitlik bir DH parametre dosyası oluşturalım. 4096 bit daha güvenli ancak biraz daha yavaş olabilir.
sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048
Bu işlem biraz zaman alabilir. Dosya oluşturulduktan sonra, Nginx yapılandırmanıza ekleyin:
ssl_dhparam /etc/nginx/dhparam.pem;
HTTP/2 Kullanımı
HTTP/2, HTTP protokolünün daha hızlı ve verimli bir sürümüdür. Tek bir TCP bağlantısı üzerinden birden fazla isteği eşzamanlı olarak işleyerek performansı artırır. HTTPS ile birlikte kullanıldığında, modern web siteleri için önerilen bir teknolojidir.
Nginx yapılandırmanızda listen direktifine http2 ekleyerek etkinleştirebilirsiniz:
listen 443 ssl http2;
listen [::]:443 ssl http2;
Tüm bu değişiklikleri yaptıktan sonra, Nginx yapılandırmanızın sözdizimini tekrar kontrol edin ve servisi yeniden yükleyin:
sudo nginx -t
sudo systemctl reload nginx
Web sitenizin SSL güvenliğini test etmek için SSL Labs’ın SSL Test aracını kullanabilirsiniz. A+ derecesi almak hedefiniz olmalıdır.
Sıkça Sorulan Sorular
Bu bölümde, Let’s Encrypt ve Nginx ile ilgili sıkça karşılaşılan bazı sorulara yanıtlar bulacaksınız.
Sertifika Neden Yenilenmiyor?
* Cron Job Eksikliği/Hatası: Certbot’un otomatik yenileme cron job’unun doğru yapılandırıldığından veya çalıştığından emin olun. sudo certbot renew --dry-run komutuyla test edin.
* Nginx Yeniden Yüklenmiyor: Yenileme sonrası Nginx’in yeniden yüklenmesi veya yeniden başlatılması gerekir. Cron job’unuzda systemctl reload nginx komutunun olduğundan emin olun.
* Doğrulama Sorunları: Certbot’un alan adınızı doğrulaması için web sunucunuzun 80 veya 443 portundan erişilebilir olması gerekir. Firewall veya yanlış Nginx yapılandırması bu doğrulama sürecini engelleyebilir.
* DNS Sorunları: Alan adınızın DNS kayıtlarının doğru IP adresini işaret ettiğinden emin olun.
* Yetki Sorunları: Certbot’un sertifika dosyalarını yazma veya Nginx yapılandırmasını okuma/yazma yetkisine sahip olduğundan emin olun. Genellikle root veya sudo ile çalıştırıldığında bu sorun olmaz.
Birden Fazla Alan Adı İçin Sertifika Nasıl Alınır?
Tek bir Certbot komutuyla birden fazla alan adı veya alt alan adı için tek bir sertifika alabilirsiniz:
sudo certbot --nginx -d example.com -d www.example.com -d subdomain.example.com -d anotherdomain.com
Bu, tüm belirtilen alan adlarını kapsayan tek bir sertifika oluşturacaktır.
Wildcard Sertifikası Nasıl Alınır?
Wildcard sertifikaları (örn. *.example.com), tüm alt alan adlarını kapsar. Let’s Encrypt wildcard sertifikaları yalnızca DNS doğrulama yöntemiyle alınabilir.
sudo certbot certonly --manual --preferred-challenges=dns -d *.example.com -d example.com
Bu komutu çalıştırdığınızda, Certbot sizden alan adınızın DNS kayıtlarına belirli TXT kayıtları eklemenizi isteyecektir. Bu kayıtları ekledikten sonra Certbot’a devam etmesi için onay vermeniz gerekir. DNS kayıtlarının yayılması biraz zaman alabilir.
Nginx Yapılandırmam Hatalı, Ne Yapmalıyım?
* Sözdizimi Kontrolü: Herhangi bir değişiklik yaptıktan sonra sudo nginx -t komutunu kullanarak yapılandırmanızın sözdizimini kontrol edin. Hata mesajları size sorunun nerede olduğunu gösterecektir.
* Hata Günlükleri: Nginx hata günlüklerini kontrol edin: sudo tail -f /var/log/nginx/error.log. Bu günlükler, Nginx’in neden başlatılamadığına veya istekleri işleyemediğine dair değerli bilgiler içerebilir.
* Varsayılan Yapılandırmaya Dönme: Eğer sorunları çözemiyorsanız, yaptığınız değişiklikleri geri alın ve Nginx’i varsayılan yapılandırmasıyla çalıştırın. Ardından adım adım değişiklikleri tekrar uygulayın.
* Yedekleme: Önemli yapılandırma dosyalarını değiştirmeden önce her zaman yedekleyin. Örneğin, sudo cp /etc/nginx/conf.d/example.com.conf /etc/nginx/conf.d/example.com.conf.bak.
Sonuç
Bu kapsamlı rehberde, CentOS 7 üzerinde Nginx web sunucunuzu Let’s Encrypt ile nasıl güvenli hale getireceğinizi adım adım öğrendiniz. Nginx kurulumundan başlayarak, Certbot ile SSL sertifikası alma, Nginx yapılandırmasını HTTPS’ye uyarlama, sertifikaları otomatik yenileme ve ek güvenlik iyileştirmeleri yapma süreçlerini detaylı bir şekilde ele aldık. Artık web siteniz, kullanıcı verilerini şifreleyerek daha güvenli bir deneyim sunacak, arama motorlarında daha iyi sıralanacak ve kullanıcılarınızın güvenini kazanacaktır. İnternet güvenliği sürekli gelişen bir alan olduğundan, Nginx ve Let’s Encrypt güncellemelerini takip etmek ve yapılandırmalarınızı düzenli olarak gözden geçirmek önemlidir. Bu rehberdeki adımları uygulayarak, sağlam ve güvenli bir web altyapısının temellerini atmış oldunuz.