Apache ve Debian 8 Üzerinde SSL Sertifikası Oluşturma ve Yapılandırma Rehberi
İnternet dünyasında güvenlik, kullanıcı gizliliği ve veri bütünlüğü her geçen gün daha da önem kazanmaktadır. Web siteleri için bu üç temel ilkeyi sağlamanın en yaygın ve etkili yolu, Güvenli Yuva Katmanı (SSL) veya onun daha modern hali olan Taşıma Katmanı Güvenliği (TLS) protokollerini kullanmaktır. Bu teknik makale, özellikle Debian 8 (Jessie) işletim sistemi üzerinde çalışan Apache web sunucusu için bir SSL sertifikasının nasıl oluşturulacağını ve yapılandırılacağını adım adım detaylandıracaktır. Amacımız, hem kendinden imzalı (self-signed) sertifikaların nasıl oluşturulacağını hem de Apache’nin bu sertifikaları kullanarak güvenli HTTPS bağlantıları sunacak şekilde nasıl yapılandırılacağını kapsamlı bir şekilde açıklamaktır.
SSL/TLS Nedir ve Neden Gereklidir?
SSL (Secure Sockets Layer) ve onun halefi TLS (Transport Layer Security), bir web sunucusu ile bir web tarayıcısı arasındaki şifreli bağlantıyı kurmak için kullanılan kriptografik protokollerdir. Temel olarak, bu protokoller üç ana güvenlik işlevi sunar:
1. Şifreleme (Encryption): Sunucu ve istemci arasındaki tüm iletişimi şifreleyerek, hassas verilerin (kullanıcı adları, şifreler, kredi kartı bilgileri vb.) kötü niyetli üçüncü şahıslar tarafından okunmasını veya ele geçirilmesini engeller.
2. Veri Bütünlüğü (Data Integrity): İletilen verilerin yolculuk sırasında değiştirilmediğini veya bozulmadığını garanti eder.
3. Kimlik Doğrulama (Authentication): Kullanıcının gerçekten beklediği sunucuyla iletişim kurduğundan emin olmasını sağlar. Bu, özellikle bir Sertifika Yetkilisi (CA) tarafından imzalanmış sertifikalar kullanıldığında geçerlidir.
Neden SSL/TLS Kullanmalıyız?
* Kullanıcı Güveni: Ziyaretçiler, adres çubuğundaki kilit simgesini ve “https://” ön ekini gördüklerinde sitenizin güvenli olduğunu bilirler. Bu, özellikle e-ticaret siteleri için kritik öneme sahiptir.
* Veri Güvenliği: Şifreleme sayesinde, kullanıcıların kişisel ve finansal bilgileri güvende kalır.
* SEO Avantajları: Google gibi arama motorları, HTTPS kullanan siteleri sıralamada öncelikli tutmaktadır. Bu, sitenizin organik arama sonuçlarındaki görünürlüğünü artırabilir.
* Yasal Uyumluluk: Bazı sektörlerde (örneğin sağlık veya finans), hassas verileri işleyen web sitelerinin SSL/TLS kullanması yasal bir zorunluluktur.
* Modern Tarayıcı Gereksinimleri: Günümüz tarayıcıları, HTTPS olmayan siteleri “güvenli değil” olarak işaretlemekte ve bazı API’leri (örneğin konum hizmetleri) yalnızca HTTPS üzerinden sunmaktadır.
Kendinden İmzalı (Self-Signed) Sertifikalar vs. CA Tarafından İmzalanmış Sertifikalar:
* Kendinden İmzalı Sertifikalar: Kendi sunucunuz tarafından oluşturulur ve imzalanır. Ücretsizdir ve test ortamları, geliştirme veya dahili ağlar için uygundur. Ancak, tarayıcılar tarafından güvenilir kabul edilmezler ve ziyaretçilere güvenlik uyarısı gösterirler, çünkü sertifika bir Sertifika Yetkilisi (CA) tarafından doğrulanmamıştır.
* CA Tarafından İmzalanmış Sertifikalar: Global olarak tanınan ve güvenilen bir Sertifika Yetkilisi (CA) tarafından verilir ve imzalanır. Tarayıcılar bu sertifikalara otomatik olarak güvenir ve kullanıcıya herhangi bir uyarı göstermez. Üretim ortamları için standart ve önerilen çözümdür. Let’s Encrypt gibi hizmetler sayesinde artık ücretsiz CA imzalı sertifikalar da edinmek mümkündür.
Bu makalede, öncelikle kendinden imzalı bir sertifikanın nasıl oluşturulacağını ve yapılandırılacağını detaylandıracağız. Bu bilgi, bir CA tarafından imzalanmış bir sertifikayı yapılandırmak için de temel teşkil edecektir.
Debian 8 (Jessie) Ortamının Hazırlanması
SSL sertifikası oluşturma ve yapılandırma işlemine başlamadan önce, Debian 8 sunucumuzun güncel olduğundan ve Apache web sunucusunun kurulu olduğundan emin olmalıyız.
Adım 1: Sistem Güncellemesi
Sunucunuzdaki paket listesini güncelleyin ve yüklü paketleri en son sürümlerine yükseltin:
sudo apt update
sudo apt upgrade
Bu komutlar, olası güvenlik açıklarını kapatır ve en yeni yazılım sürümlerine sahip olmanızı sağlar.
Adım 2: Apache Web Sunucusunun Kurulması (Gerekliyse)
Eğer Apache henüz sunucunuzda kurulu değilse, aşağıdaki komutla kurabilirsiniz:
sudo apt install apache2
Kurulum tamamlandıktan sonra, Apache servisinin çalıştığından emin olun:
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
systemctl status apache2 komutunun çıktısında “active (running)” ifadesini görmelisiniz.
Adım 3: Gerekli Apache Modüllerini Etkinleştirme
Apache’nin SSL bağlantılarını işleyebilmesi için mod_ssl modülünün etkinleştirilmesi gerekir. Debian’da bu işlem a2enmod aracıyla kolayca yapılır:
sudo a2enmod ssl
Bu komut, mod_ssl modülünü etkinleştirir. Değişikliklerin etkili olması için Apache’yi yeniden başlatmanız gerekecektir, ancak bunu sertifika oluşturma ve yapılandırma adımlarından sonra yapacağız.
Kendinden İmzalı (Self-Signed) SSL Sertifikası Oluşturma
Kendinden imzalı bir SSL sertifikası oluşturmak için OpenSSL aracını kullanacağız. OpenSSL, kriptografik işlevler sunan güçlü bir komut satırı aracıdır ve çoğu Linux dağıtımında varsayılan olarak bulunur.
Adım 1: Gerekli Paketleri Kurma (OpenSSL)
OpenSSL genellikle Debian sistemlerinde varsayılan olarak yüklüdür. Ancak, emin olmak için veya herhangi bir nedenle eksikse, aşağıdaki komutla kurabilirsiniz:
sudo apt install openssl
Adım 2: Özel Anahtar (Private Key) Oluşturma
SSL sertifikalarının temelinde bir özel anahtar (private key) ve bir genel anahtar (public key) çifti bulunur. Özel anahtar gizli tutulmalı ve sunucu üzerinde güvenli bir yerde saklanmalıdır. İlk olarak, 2048 bit uzunluğunda bir RSA özel anahtarı oluşturacağız. Bu uzunluk, günümüz güvenlik standartları için yeterlidir.
sudo openssl genrsa -out /etc/ssl/private/apache-selfsigned.key 2048
* genrsa: RSA özel anahtarı oluşturma komutu.
* -out /etc/ssl/private/apache-selfsigned.key: Oluşturulan özel anahtarın kaydedileceği dosya yolu. /etc/ssl/private/ dizini, özel anahtarlar için standart bir konumdur ve genellikle sadece root kullanıcısı tarafından okunabilir olmalıdır.
* 2048: Anahtarın bit cinsinden uzunluğu.
Bu komut, /etc/ssl/private/apache-selfsigned.key yolunda apache-selfsigned.key adında bir özel anahtar dosyası oluşturacaktır. Bu dosyanın izinlerini yalnızca root kullanıcısının okuyabileceği şekilde ayarlamak önemlidir:
sudo chmod 600 /etc/ssl/private/apache-selfsigned.key
Adım 3: Sertifika İmzalama İsteği (CSR) Oluşturma
Özel anahtarımızı oluşturduktan sonra, bir Sertifika İmzalama İsteği (Certificate Signing Request – CSR) oluşturmalıyız. CSR, sunucunuz ve sertifikanız hakkında bilgi içeren bir dosyadır ve bir CA’ya sertifika imzalatmak için kullanılır. Kendinden imzalı bir sertifika oluştururken de bu adımı atlamak yerine, önce bir CSR oluşturup sonra bu CSR’ı kendi özel anahtarımızla imzalayacağız.
sudo openssl req -new -key /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.csr
* req: Sertifika imzalama isteği (CSR) yönetimi için kullanılan OpenSSL komutu.
* -new: Yeni bir CSR oluşturulacağını belirtir.
* -key /etc/ssl/private/apache-selfsigned.key: CSR’ın oluşturulacağı özel anahtar dosyasının yolunu belirtir.
* -out /etc/ssl/certs/apache-selfsigned.csr: Oluşturulan CSR dosyasının kaydedileceği yol. /etc/ssl/certs/ dizini, sertifika dosyaları için standart bir konumdur.
Bu komutu çalıştırdığınızda, OpenSSL sizden sertifika hakkında çeşitli bilgiler isteyecektir. Bu bilgiler, sertifikanın kimlik bilgilerini oluşturur:
* Country Name (2 letter code) [AU]: Ülke kodu (örneğin, TR).
* State or Province Name (full name) [Some-State]: Eyalet veya il adı (örneğin, İstanbul).
* Locality Name (eg, city) []: Şehir adı (örneğin, Kadıköy).
* Organization Name (eg, company) [Internet Widgits Pty Ltd]: Şirket veya kuruluş adı (örneğin, Benim Şirketim A.Ş.).
* Organizational Unit Name (eg, section) []: Departman veya birim adı (örneğin, IT Departmanı).
* Common Name (e.g. server FQDN or YOUR name) []: Bu kısım çok önemlidir. Web sitenizin tam alan adını (FQDN) girmelisiniz (örneğin, www.ornek.com veya ornek.com). Eğer bir IP adresi üzerinden erişim sağlıyorsanız, IP adresini de girebilirsiniz. Kendinden imzalı sertifikalarda bu, tarayıcıların “güvenli değil” uyarısı vermesinin ana nedenlerinden biri olabilir, çünkü tarayıcı bu adı sorgular ve eşleşmezse uyarı verir.
* Email Address []: İlgili e-posta adresi.
* A challenge password []: İsteğe bağlı bir parola. Genellikle boş bırakılır.
* An optional company name []: İsteğe bağlı bir şirket adı. Genellikle boş bırakılır.
Bu bilgileri doğru ve eksiksiz bir şekilde doldurun.
Adım 4: Kendinden İmzalı Sertifika Oluşturma
Şimdi özel anahtarımızı ve CSR dosyamızı kullanarak kendinden imzalı SSL sertifikamızı oluşturabiliriz. Bu sertifika, tarayıcılar tarafından “güvenilir” olarak kabul edilmeyecek olsa da, şifreleme işlevini yerine getirecektir.
sudo openssl x509 -req -days 365 -in /etc/ssl/certs/apache-selfsigned.csr -signkey /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
* x509: X.509 sertifika yönetimi için kullanılan OpenSSL komutu.
* -req: Giriş dosyasının bir CSR olduğunu belirtir.
* -days 365: Sertifikanın geçerlilik süresini gün cinsinden belirtir (burada 1 yıl).
* -in /etc/ssl/certs/apache-selfsigned.csr: Sertifika oluşturmak için kullanılacak CSR dosyasının yolu.
* -signkey /etc/ssl/private/apache-selfsigned.key: Sertifikayı imzalamak için kullanılacak özel anahtarın yolu. Kendinden imzalı olduğu için kendi özel anahtarımızı kullanıyoruz.
* -out /etc/ssl/certs/apache-selfsigned.crt: Oluşturulan sertifika dosyasının kaydedileceği yol. .crt uzantısı, sertifika dosyaları için yaygın olarak kullanılır.
Bu adımlarla, /etc/ssl/private/apache-selfsigned.key adresinde özel anahtarınızı ve /etc/ssl/certs/apache-selfsigned.crt adresinde kendinden imzalı SSL sertifikanızı oluşturmuş oldunuz.
Apache Sunucusunu SSL İçin Yapılandırma
Sertifikalarımızı oluşturduktan sonra, Apache’yi bu sertifikaları kullanarak HTTPS bağlantıları sunacak şekilde yapılandırmamız gerekiyor.
Adım 1: SSL Modülünü Etkinleştirme (Tekrar Kontrol)
Daha önce mod_ssl‘i etkinleştirdiğimizden emin olun:
sudo a2enmod ssl
Adım 2: Sanal Host Dosyasını Oluşturma/Düzenleme
Apache, sanal host (VirtualHost) yapılandırmaları aracılığıyla farklı web sitelerini veya farklı protokolleri (HTTP/HTTPS) yönetir. Genellikle, SSL için ayrı bir sanal host yapılandırması oluşturulur. Debian’da, sanal host yapılandırmaları /etc/apache2/sites-available/ dizininde bulunur. Varsayılan olarak, bu dizinde default-ssl.conf adında bir örnek dosya bulunabilir. Bu dosyayı kopyalayarak veya düzenleyerek başlayabiliriz.
Örnek olarak, default-ssl.conf dosyasını kopyalayarak kendi yapılandırma dosyamızı oluşturalım:
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf
sudo nano /etc/apache2/sites-available/000-default-ssl.conf
000-default-ssl.conf dosyasının içeriğini aşağıdaki gibi düzenleyin (veya kendi sitenizin ihtiyaçlarına göre uyarlayın):
ServerAdmin webmaster@localhost
ServerName your_domain_or_ip # Kendi alan adınızı veya IP adresinizi buraya yazın
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
Yukarıdaki yapılandırmadaki önemli noktalar:
:443>: Bu blok, HTTPS’in standart bağlantı noktası olan 443 üzerinden gelen istekleri dinler.
* ServerName your_domain_or_ip: Buraya web sitenizin alan adını (örneğin, www.ornek.com) veya sunucunuzun IP adresini girin. Bu, daha önce CSR oluştururken girdiğiniz Common Name (CN) ile eşleşmelidir.
* DocumentRoot /var/www/html: Web sitenizin dosyalarının bulunduğu dizin. Varsayılan Apache kök dizinidir.
* SSLEngine on: Bu yönerge, SSL motorunu bu sanal host için etkinleştirir.
* SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt: Oluşturduğumuz SSL sertifikasının tam yolu.
* SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key: Oluşturduğumuz özel anahtarın tam yolu.
Eğer bir CA tarafından imzalanmış bir sertifika kullanıyorsanız, SSLCertificateChainFile veya SSLCACertificateFile gibi ek yönergelerle ara sertifikaları (intermediate certificates) da belirtmeniz gerekebilir. Ancak kendinden imzalı bir sertifika için bu gerekli değildir.
Adım 3: Sanal Hostu Etkinleştirme
Yeni oluşturduğumuz veya düzenlediğimiz SSL sanal host yapılandırma dosyasını etkinleştirmek için a2ensite komutunu kullanın:
sudo a2ensite 000-default-ssl.conf
Bu komut, /etc/apache2/sites-available/ dizinindeki yapılandırma dosyanıza /etc/apache2/sites-enabled/ dizininden bir sembolik bağlantı (symlink) oluşturur.
Adım 4: Apache’yi Yeniden Başlatma
Tüm değişikliklerin etkili olması için Apache servisini yeniden başlatmanız gerekir:
sudo systemctl restart apache2
Herhangi bir hata olup olmadığını kontrol etmek için Apache’nin durumunu kontrol edebilirsiniz:
sudo systemctl status apache2
Eğer herhangi bir hata mesajı görmüyorsanız, Apache’niz artık SSL sertifikanızı kullanarak HTTPS bağlantıları sunmaya hazır demektir.
Şimdi web tarayıcınızı açıp https://your_domain_or_ip adresine giderek sitenize erişmeye çalışın. Kendinden imzalı bir sertifika kullandığınız için tarayıcınız muhtemelen bir güvenlik uyarısı gösterecektir (“Bağlantınız gizli değil”, “Bu site güvenli değil” vb.). Bu uyarıyı “Gelişmiş” veya “Devam et” seçeneğiyle atlayarak sitenize erişebilirsiniz. Bu, sertifikanızın doğru çalıştığını ancak bir CA tarafından doğrulanmadığını gösterir.
Sertifika Yetkilisi (CA) Tarafından İmzalanmış Sertifika Kullanımı (Kısaca)
Üretim ortamları için her zaman bir Sertifika Yetkilisi (CA) tarafından imzalanmış bir sertifika kullanmanız şiddetle tavsiye edilir. Süreç, kendinden imzalı sertifika oluşturmaya benzer, ancak bazı temel farklılıklar vardır:
1. Özel Anahtar ve CSR Oluşturma: Yine bir özel anahtar oluşturur ve bu anahtarla bir CSR dosyası hazırlarsınız (yukarıdaki adımlar 2 ve 3 ile aynı).
2. CSR’ı CA’ya Gönderme: Oluşturduğunuz CSR dosyasını seçtiğiniz Sertifika Yetkilisine (örneğin, Comodo, DigiCert, Let’s Encrypt) gönderirsiniz. CA, kimliğinizi doğruladıktan sonra CSR’ınızı kendi anahtarlarıyla imzalar ve size sertifika dosyalarını geri gönderir.
3. Sertifika Dosyalarını Alma: CA size genellikle birkaç dosya gönderir:
* Ana sertifika (domain certificate, genellikle your_domain.crt veya your_domain.pem).
* Ara sertifikalar (intermediate certificates, intermediate.crt veya ca-bundle.crt).
* Kök sertifika (root certificate, bazen ayrı bir dosya olarak verilir).
4. Apache Yapılandırması: Apache VirtualHost yapılandırmanızda, SSLCertificateFile yönergesini ana sertifikanızın yoluna ayarlarsınız. Ayrıca, CA tarafından verilen ara sertifikaları belirtmek için SSLCertificateChainFile veya SSLCACertificateFile yönergesini kullanmanız gerekebilir. Bu, tarayıcıların sertifika zincirini doğru bir şekilde doğrulamasını sağlar.
SSLCertificateFile /etc/ssl/certs/your_domain.crt
SSLCertificateKeyFile /etc/ssl/private/your_domain.key
SSLCertificateChainFile /etc/ssl/certs/intermediate_bundle.crt # Gerekliyse
Let’s Encrypt, ücretsiz ve otomatik sertifikalar sağlayan popüler bir CA’dır. Debian 8 için Let’s Encrypt (Certbot) kurulumu, genellikle backports deposundan veya manuel kurulumla yapılır, çünkü Jessie’nin varsayılan depolarında Certbot’un en yeni sürümü bulunmayabilir.
Ek Güvenlik Önlemleri ve İyi Uygulamalar
SSL sertifikasını yapılandırmak sadece başlangıçtır. Güvenliği artırmak ve en iyi uygulamaları takip etmek için ek adımlar atılabilir:
1. HTTP’yi HTTPS’ye Yönlendirme
Kullanıcıların her zaman güvenli bağlantı üzerinden sitenize erişmesini sağlamak için, HTTP üzerinden gelen tüm istekleri HTTPS’ye yönlendirmek iyi bir uygulamadır. Bunu Apache’de mod_rewrite modülünü kullanarak yapabilirsiniz:
Önce mod_rewrite‘ı etkinleştirin:
sudo a2enmod rewrite
Ardından, HTTP sanal host yapılandırmanıza (genellikle /etc/apache2/sites-available/000-default.conf) aşağıdaki kuralları ekleyin:
ServerName your_domain_or_ip
Redirect permanent / https://your_domain_or_ip/
Veya daha esnek bir RewriteRule kullanabilirsiniz:
ServerName your_domain_or_ip
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Bu değişikliklerden sonra Apache’yi yeniden başlatmayı unutmayın.
2. Güçlü Şifreler ve Protokoller Kullanma
Varsayılan Apache SSL yapılandırması bazen eski ve zayıf şifrelemeleri destekleyebilir. Güvenliği artırmak için yalnızca güçlü TLS protokollerini (TLSv1.2, TLSv1.3) ve güçlü şifreleme algoritmalarını kullanmalısınız. Bunu, SSL VirtualHost yapılandırmanıza ekleyeceğiniz veya /etc/apache2/mods-available/ssl.conf dosyasında düzenleyeceğiniz SSLProtocol ve SSLCipherSuite yönergeleriyle yapabilirsiniz:
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
Bu, SSLv2, SSLv3, TLSv1.0 ve TLSv1.1 gibi eski ve potansiyel olarak zayıf protokolleri devre dışı bırakır ve sadece daha güçlü şifreleri tercih eder.
3. HSTS (HTTP Strict Transport Security)
HSTS, tarayıcılara sitenize her zaman HTTPS üzerinden bağlanmalarını söyleyen bir güvenlik mekanizmasıdır. Bu, ilk bağlantı HTTP üzerinden yapılsa bile, tarayıcının otomatik olarak HTTPS’ye geçmesini sağlar ve ortadaki adam (Man-in-the-Middle) saldırılarına karşı koruma sağlar. HSTS’yi etkinleştirmek için Apache’de mod_headers modülünü kullanabilirsiniz:
Önce mod_headers‘ı etkinleştirin:
sudo a2enmod headers
Ardından, SSL VirtualHost yapılandırmanıza aşağıdaki satırı ekleyin:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
max-age değeri, tarayıcının bu kuralı ne kadar süreyle hatırlayacağını saniye cinsinden belirtir. includeSubDomains alt alan adlarını da kapsar. preload ise sitenizi HSTS preload listesine eklemek için kullanılır (ancak bu ek bir adımdır ve dikkatli yapılmalıdır).
4. Sertifika Yenileme
Kendinden imzalı veya CA tarafından imzalanmış tüm sertifikaların bir geçerlilik süresi vardır. Sertifikanızın süresi dolmadan önce yenilediğinizden emin olun. CA tarafından imzalanmış sertifikalar için genellikle CA size bir yenileme hatırlatıcısı gönderir. Let’s Encrypt gibi hizmetler, otomatik yenileme araçları (Certbot) sunar.
5. Özel Anahtar Güvenliği
Özel anahtarınızın güvenliği, SSL güvenliğinizin temelidir. Bu dosya, yalnızca root kullanıcısı tarafından okunabilir olmalı ve asla halka açık bir şekilde paylaşılmamalıdır.
Sorun Giderme (Troubleshooting)
SSL yapılandırmasında sorunlarla karşılaşmak yaygındır. İşte bazı yaygın sorunlar ve çözümleri:
* Apache Başlamıyor veya Hata Veriyor:
* Apache hata günlüklerini kontrol edin: /var/log/apache2/error.log. Bu günlükler, yapılandırma hataları hakkında değerli bilgiler sağlar.
* Yapılandırma dosyasındaki sözdizimi hatalarını kontrol edin: sudo apache2ctl configtest. Bu komut, Apache’yi yeniden başlatmadan önce yapılandırma dosyalarınızdaki hataları kontrol eder.
* Yanlış dosya yolları veya dosya izinleri olabilir. SSLCertificateFile ve SSLCertificateKeyFile yollarının doğru olduğundan ve Apache’nin bu dosyalara okuma iznine sahip olduğundan emin olun. Özel anahtar dosyasının izni 600 olmalıdır.
* Tarayıcı Hala “Güvenli Değil” Uyarısı Veriyor (CA Sertifikası Olmasına Rağmen):
* CA tarafından verilen ara sertifikaları (intermediate certificates) SSLCertificateChainFile yönergesiyle doğru bir şekilde yapılandırdığınızdan emin olun. Tarayıcıların güven zincirini tamamlayabilmesi için bu sertifikalar gereklidir.
* ServerName yönergesinin, sertifikadaki Common Name (CN) ile tam olarak eşleştiğinden emin olun.
* HTTPS Bağlantısı Kurulamıyor (Bağlantı Zaman Aşımına Uğruyor):
* Sunucunuzun güvenlik duvarının (örneğin, UFW veya iptables) 443 numaralı bağlantı noktasını (port) açtığından emin olun. Debian 8’de UFW kullanıyorsanız: sudo ufw allow 443/tcp veya sudo ufw allow 'Apache Full'.
* Apache’nin 443 portunu dinlediğinden emin olun. sudo netstat -tulnp | grep 443 komutuyla kontrol edebilirsiniz.
* Eski Tarayıcılarda Sorunlar:
* Yukarıda belirtilen SSLProtocol ve SSLCipherSuite ayarları çok katı olabilir. Eski tarayıcıları desteklemeniz gerekiyorsa, bazı zayıf şifreleri veya protokolleri yeniden etkinleştirmeniz gerekebilir, ancak bu güvenlik riskleri taşır.
* SSL Labs Testi: SSL Labs’ın ücretsiz SSL Sunucu Testi (https://www.ssllabs.com/ssltest/), sunucunuzun SSL/TLS yapılandırmasını derinlemesine analiz etmek ve potansiyel sorunları veya zayıflıkları belirlemek için harika bir araçtır.
Sonuç
Bu makale, Debian 8 işletim sistemi üzerinde çalışan bir Apache web sunucusu için kendinden imzalı bir SSL sertifikasının nasıl oluşturulacağını ve yapılandırılacağını adım adım detaylandırmıştır. SSL/TLS’nin ne olduğu, neden önemli olduğu ve kendinden imzalı sertifikaların test ve geliştirme ortamları için nasıl kullanılabileceği açıklanmıştır. Ayrıca, Apache’yi SSL için yapılandırma, CA tarafından imzalanmış sertifikaların kullanımı ve ek güvenlik önlemleri gibi konulara da değinilmiştir.
Unutulmamalıdır ki, kendinden imzalı sertifikalar üretim ortamları için uygun değildir çünkü tarayıcılar tarafından güvenilmez kabul edilirler. Gerçek dünya uygulamaları için her zaman bir Sertifika Yetkilisi (CA) tarafından imzalanmış bir sertifika kullanmalısınız. Let’s Encrypt gibi hizmetler, bu süreci basitleştirmiş ve ücretsiz hale getirmiştir.
Web sitenizin güvenliğini sağlamak, kullanıcılarınızın gizliliğini korumak ve modern web standartlarına uymak için SSL/TLS kullanımı artık bir lüks değil, bir zorunluluktur. Bu rehberdeki adımları takip ederek, Apache sunucunuzu güvenli HTTPS bağlantıları sunacak şekilde başarıyla yapılandırabilirsiniz. Güvenli bir web deneyimi için SSL/TLS yapılandırmanızı düzenli olarak gözden geçirmeyi ve güncel tutmayı unutmayın.
