Güvenli bir internet deneyimi sağlamak ve veri trafiğini şifrelemek için SSL (Secure Sockets Layer) sertifikaları, Linux sunucularında kritik bir rol oynar. Özellikle web siteleri ve API servisleri için HTTPS protokolüne geçiş, SEO performansını artırırken kullanıcı güvenliğini de maksimize eder.
Ubuntu/Debian için:
CentOS/RHEL için:
Nginx kullanıyorsanız:
İçeriği şu şekilde düzenleyin:
Ardından yapılandırmayı etkinleştirin ve Apache’yi yeniden başlatın:
İçeriği şu şekilde düzenleyin:
Değişiklikleri kaydettikten sonra Nginx’i yeniden başlatın:
1. SSL Sertifikası Nedir?
SSL sertifikası, istemci ve sunucu arasındaki veri iletişimini şifreleyen bir güvenlik protokolüdür. Bir web sitesinin HTTPS protokolünü kullanmasını sağlayarak:- Kullanıcı bilgilerinin korunmasını sağlar.
- Arama motoru sıralamalarında avantaj sağlar.
- Tarayıcılar tarafından güvenilir olarak işaretlenmesini sağlar.
2. SSL Sertifikası Türleri
Kurulum sürecine geçmeden önce, ihtiyaçlara göre farklı SSL sertifikası türlerini bilmek faydalı olacaktır:- Tek Alan Adı SSL: Sadece bir alan adı için geçerlidir.
- Wildcard SSL: Alt alan adlarını da kapsayan genişletilmiş sertifikadır.
- Genişletilmiş Doğrulama (EV) SSL: Şirket doğrulaması gerektiren yüksek güvenlikli sertifikadır.
3. Linux Sunucusunda SSL Sertifikası Kurulumu
SSL sertifikasının Linux sunucusuna kurulumu için iki farklı yöntem vardır:- Let’s Encrypt kullanarak ücretsiz SSL yükleme
- Manuel SSL sertifikası yükleme (Özel sağlayıcıdan alınan sertifika)
3.1. Let’s Encrypt ile Otomatik SSL Sertifikası Kurulumu
Let’s Encrypt, ücretsiz ve açık kaynaklı bir SSL sertifika otoritesidir. Certbot aracı ile kolayca kurulabilir.Adım 1: Certbot’u Yükleyin
Öncelikle sisteminizi güncelleyin ve Certbot’u yükleyin:Ubuntu/Debian için:
Bash:
sudo apt update && sudo apt install certbot python3-certbot-apache -y
Bash:
sudo yum install epel-release -y
sudo yum install certbot python3-certbot-apache -y
Adım 2: SSL Sertifikasını Alın
Aşağıdaki komutla SSL sertifikasını alabilirsiniz:
Bash:
sudo certbot --apache
Bash:
sudo certbot --nginx
Adım 3: SSL Sertifikasının Yenilenmesini Otomatikleştirme
Let’s Encrypt sertifikaları 90 gün geçerlidir. Yenileme işlemi için aşağıdaki komut cron job’a eklenebilir:
Bash:
sudo certbot renew --dry-run
3.2. Özel Sağlayıcıdan Alınan SSL Sertifikasının Kurulumu
Eğer DigiCert, Comodo, GlobalSign gibi sağlayıcılardan ücretli SSL sertifikası aldıysanız, manuel yükleme yapmanız gerekir.Adım 1: Sertifika Dosyalarını Sunucuya Kopyalayın
SSL sağlayıcınızdan aldığınız .crt ve .key dosyalarını sunucuya yükleyin:
Bash:
scp mydomain.crt mydomain.key user@sunucu_ip:/etc/ssl/
Adım 2: Apache için SSL Yapılandırması
Apache kullananlar default-ssl.conf dosyasını düzenlemelidir:
Bash:
sudo nano /etc/apache2/sites-available/default-ssl.conf
Bash:
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/mydomain.crt
SSLCertificateKeyFile /etc/ssl/mydomain.key
</VirtualHost>
Bash:
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
Adım 3: Nginx için SSL Yapılandırması
Nginx kullananlar default.conf dosyasını düzenlemelidir:
Bash:
sudo nano /etc/nginx/sites-available/default
Bash:
server {
listen 443 ssl;
server_name domain.com;
ssl_certificate /etc/ssl/mydomain.crt;
ssl_certificate_key /etc/ssl/mydomain.key;
}
Bash:
sudo systemctl restart nginx
4. SSL Sertifikası Kurulum Sonrası Test ve Doğrulama
Kurulum tamamlandıktan sonra SSL’in düzgün çalıştığını doğrulamak için aşağıdaki yöntemleri kullanabilirsiniz:- Tarayıcı Testi: Web sitenizi https:// ile açarak güvenli olup olmadığını kontrol edin.
- SSL Checker Kullanımı:
- SSL Labs üzerinden test yapabilirsiniz.
- OpenSSL ile Manuel Test:
Bash:openssl s_client -connect domain.com:443
5. SSL Sertifikası Sorun Giderme
Eğer SSL kurulumu sonrası sorun yaşarsanız, aşağıdaki adımları takip edebilirsiniz:- Port 443’ün açık olduğundan emin olun:
Bash:sudo ufw allow 443/tcp sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
- Apache veya Nginx yapılandırma hatalarını kontrol edin:
Bash:sudo apachectl configtest sudo nginx -t
- Log dosyalarını inceleyin:
Bash:sudo tail -f /var/log/apache2/error.log sudo tail -f /var/log/nginx/error.log