Takip et

How To Create a SSL Certificate on Apache for Ubuntu 14.04

Bu rehberde, Ubuntu 14.04 sunucusunda çalışan Apache web sunucusu için kendinden imzalı (self-signed) bir SSL sertifikasının nasıl oluşturula

Bu rehberde, Ubuntu 14.04 sunucusunda çalışan Apache web sunucusu için kendinden imzalı (self-signed) bir SSL sertifikasının nasıl oluşturulacağını ve yapılandırılacağını adım adım öğreneceksiniz. SSL/TLS (Güvenli Yuva Katmanı/Taşıma Katmanı Güvenliği), bir web sunucusu ile bir istemci (tarayıcı) arasındaki iletişimi şifreleyerek veri güvenliğini sağlayan bir protokoldür. Bu, özellikle hassas bilgilerin (kullanıcı adları, şifreler, kredi kartı bilgileri) aktarıldığı durumlarda kritik öneme sahiptir.

Kendinden imzalı bir SSL sertifikası, sertifika yetkilisi (CA) tarafından doğrulanmamış bir sertifikadır. Bu nedenle, tarayıcılar bu tür sertifikalarla karşılaştığında bir güvenlik uyarısı gösterecektir. Ancak, geliştirme ortamları, dahili uygulamalar veya yalnızca trafiği şifrelemek istediğiniz ancak resmi bir CA sertifikasına ihtiyaç duymadığınız durumlar için mükemmel bir çözümdür.

Ön Hazırlıklar ve Gerekli Paketlerin Kurulumu

SSL sertifikası oluşturma ve Apache’yi yapılandırma işlemine başlamadan önce, sunucunuzun güncel olduğundan ve gerekli tüm yazılımların yüklü olduğundan emin olmalıyız. Bu adımlar, sorunsuz bir kurulum süreci için temel oluşturacaktır.

Sistem Güncelleme

İlk olarak, sunucunuzdaki paket listelerini güncelleyip mevcut paketleri yükselterek sisteminizin güncel olduğundan emin olun. Bu, olası uyumluluk sorunlarını önler ve en son güvenlik yamalarını almanızı sağlar.

sudo apt-get update
sudo apt-get upgrade -y

Apache Kurulumu (Gerekliyse)

Eğer sunucunuzda Apache web sunucusu kurulu değilse, aşağıdaki komutla kurabilirsiniz. Çoğu durumda, Ubuntu 14.04 sunucularında Apache zaten kurulu olacaktır.

sudo apt-get install apache2 -y

Kurulum tamamlandıktan sonra Apache servisinin çalıştığını doğrulamak için aşağıdaki komutu kullanabilirsiniz:

sudo service apache2 status

Çıktıda apache2 is running veya benzeri bir ifade görmelisiniz.

SSL Modülünü Etkinleştirme

Apache’nin SSL bağlantılarını işleyebilmesi için mod_ssl modülünün etkinleştirilmesi gerekir. Bu modül, SSL/TLS şifrelemesini yöneten temel bileşendir.

sudo a2enmod ssl

Bu komut, mod_ssl‘i etkinleştirir. Değişikliklerin etkili olması için Apache’yi yeniden başlatmanız gerekecektir, ancak bunu diğer yapılandırmaları yaptıktan sonra toplu olarak yapacağız.

OpenSSL Kurulumu (Gerekliyse)

SSL sertifikalarını oluşturmak için OpenSSL aracına ihtiyacımız var. Genellikle Ubuntu sistemlerinde varsayılan olarak yüklüdür, ancak emin olmak için kontrol edebilir ve gerekirse kurabilirsiniz.

sudo apt-get install openssl -y

Güvenlik Duvarı Ayarları (UFW)

Eğer sunucunuzda UFW (Uncomplicated Firewall) etkinse, HTTPS trafiğine izin vermek için 443 numaralı portu açmanız gerekmektedir. Apache, UFW ile entegre profiller sağlar.

sudo ufw allow 'Apache Full'
sudo ufw status

Apache Full profili hem HTTP (80) hem de HTTPS (443) portlarına erişime izin verir. Eğer sadece HTTPS’e izin vermek isterseniz Apache Secure profilini kullanabilirsiniz. UFW’nin etkin olduğundan emin olun:

sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)? sorusuna y yanıtını verin.

Kendinden İmzalı (Self-Signed) SSL Sertifikası Oluşturma

Şimdi, Apache için kullanacağımız kendinden imzalı SSL sertifikasını ve özel anahtarını oluşturma zamanı. Bu işlem, openssl aracı kullanılarak gerçekleştirilir. Sertifika ve anahtar dosyalarını genellikle /etc/ssl/certs/ ve /etc/ssl/private/ dizinlerinde saklarız.

Sertifika ve Özel Anahtar Oluşturma

Aşağıdaki komut, yeni bir özel anahtar ve bu anahtarla ilişkili bir kendinden imzalı sertifika oluşturacaktır. Sertifika 365 gün (1 yıl) boyunca geçerli olacaktır.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Bu komutu çalıştırdığınızda, sizden çeşitli bilgiler istenecektir. Bu bilgiler, sertifikanın kimliğini 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, Istanbul).
* Locality Name (eg, city) []: Şehir adı (örneğin, Kadikoy).
* Organization Name (eg, company) [Internet Widgits Pty Ltd]: Şirket veya organizasyon adı (örneğin, MyCompany).
* Organizational Unit Name (eg, section) []: Departman veya birim adı (örneğin, IT Dept).
* Common Name (e.g. server FQDN or YOUR name) []: Burası çok önemlidir. Sunucunuzun alan adı (örneğin, www.example.com) veya IP adresi olmalıdır. Eğer bir alan adınız yoksa, sunucunuzun genel IP adresini girin. Tarayıcılar, bu alandaki değer ile erişmeye çalıştığınız adresi karşılaştırır.
* Email Address []: İletişim e-posta adresi.

Parametrelerin Açıklaması:
* -x509: Bu, bir kendinden imzalı sertifika oluşturulacağını belirtir.
* -nodes: Anahtar için bir parola oluşturulmamasını sağlar. Bu, Apache’nin her başlatılışında parola sormamasını sağlar, ancak anahtarın güvenliğini sizin yönetmeniz gerektiği anlamına gelir.
* -days 365: Sertifikanın 365 gün boyunca geçerli olacağını belirtir. Bu süreyi ihtiyacınıza göre değiştirebilirsiniz.
* -newkey rsa:2048: 2048 bit RSA anahtarı oluşturur. Bu, günümüzde standart ve güvenli bir anahtar boyutudur.
* -keyout /etc/ssl/private/apache-selfsigned.key: Oluşturulan özel anahtar dosyasının yolunu belirtir.
* -out /etc/ssl/certs/apache-selfsigned.crt: Oluşturulan sertifika dosyasının yolunu belirtir.

Sertifika İzinlerini Ayarlama

Özel anahtar dosyası (.key), sunucunuzun güvenliği için kritik öneme sahiptir. Yalnızca root kullanıcısının okuma iznine sahip olması gerekir.

sudo chmod 600 /etc/ssl/private/apache-selfsigned.key

Bu komut, /etc/ssl/private/apache-selfsigned.key dosyasının yalnızca sahibinin (root) okuma ve yazma iznine sahip olmasını sağlar.

Apache’yi SSL Kullanacak Şekilde Yapılandırma

Sertifikamızı oluşturduğumuza göre, Apache’yi bu sertifikayı kullanarak HTTPS trafiğini sunacak şekilde yapılandırmalıyız. Apache, SSL yapılandırması için ayrı bir sanal host dosyası kullanır.

Varsayılan SSL Sanal Host Dosyasını Kopyalama

Apache, genellikle default-ssl.conf adında bir örnek SSL sanal host dosyasıyla birlikte gelir. Bu dosyayı kendi sanal host dosyamız olarak kopyalayarak başlamak en kolay yoldur.

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/yourdomain.com-ssl.conf

yourdomain.com yerine kendi alan adınızı veya sunucunuzun IP adresini kullanabilirsiniz. Eğer sadece varsayılan bir yapılandırma istiyorsanız, 000-default-ssl.conf gibi bir isim de verebilirsiniz.

Sanal Host Dosyasını Düzenleme

Şimdi kopyaladığımız sanal host dosyasını düzenlememiz gerekiyor. Bu dosyada, Apache’ye hangi sertifika ve anahtar dosyalarını kullanacağını ve hangi domain için geçerli olduğunu söyleyeceğiz.

sudo nano /etc/apache2/sites-available/yourdomain.com-ssl.conf

Bu dosyayı açtığınızda, aşağıdaki gibi bir yapılandırma bloğu görmelisiniz. Önemli olan kısımları kendi bilgilerinizle güncelleyin:


        
                ServerAdmin webmaster@localhost
                ServerName yourdomain.com:443  # Burayı kendi alan adınız veya IP adresinizle değiştirin
                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  # Sertifika dosyanızın yolu
                SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key  # Anahtar dosyanızın yolu

                
                                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 örnekte:
* ServerName: Bu, tarayıcıların HTTPS üzerinden erişeceği alan adını veya IP adresini belirtir. Oluşturduğunuz sertifikadaki Common Name ile eşleşmelidir.
* SSLCertificateFile: Oluşturduğunuz .crt (sertifika) dosyasının tam yolunu belirtin.
* SSLCertificateKeyFile: Oluşturduğunuz .key (özel anahtar) dosyasının tam yolunu belirtin.

Bu değişiklikleri yaptıktan sonra dosyayı kaydedin ve kapatın (Nano’da Ctrl+X, sonra Y, sonra Enter).

Sanal Host’u Etkinleştirme

Yeni yapılandırdığınız SSL sanal host dosyasını etkinleştirmeniz gerekir:

sudo a2ensite yourdomain.com-ssl.conf

HTTP’den HTTPS’ye Yönlendirme (İsteğe Bağlı ama Önerilen)

Kullanıcıların web sitenize her zaman güvenli bir bağlantı üzerinden erişmesini sağlamak için, HTTP (port 80) üzerinden gelen tüm istekleri otomatik olarak HTTPS (port 443) üzerine yönlendirmek iyi bir uygulamadır. Bunun için varsayılan HTTP sanal host dosyasını düzenlememiz gerekir:

sudo nano /etc/apache2/sites-available/000-default.conf

Bu dosyanın bloğunun içine aşağıdaki satırları ekleyin:


    ServerName yourdomain.com # Alan adınız veya IP adresiniz
    Redirect permanent / https://yourdomain.com/ # Yönlendirilecek alan adı veya IP adresi

yourdomain.com yerine kendi alan adınızı veya sunucunuzun IP adresini yazmayı unutmayın. Bu, HTTP üzerinden gelen tüm istekleri HTTPS’e kalıcı olarak yönlendirecektir.

Apache Yapılandırmasını Kontrol Etme ve Yeniden Başlatma

Tüm yapılandırma değişikliklerini yaptıktan sonra, Apache yapılandırmasının geçerli olup olmadığını kontrol etmek her zaman iyi bir fikirdir.

sudo apache2ctl configtest

Eğer çıktı Syntax OK ise, her şey yolunda demektir. Herhangi bir hata mesajı alırsanız, yapılandırma dosyalarınızı dikkatlice kontrol edin.

Şimdi, değişikliklerin etkili olması için Apache servisini yeniden başlatın:

sudo service apache2 restart

Sertifikanın Test Edilmesi ve Sorun Giderme

Tüm adımları tamamladıktan sonra, SSL sertifikanızın doğru şekilde çalıştığını test etmelisiniz.

Tarayıcı Üzerinden Kontrol

Web tarayıcınızı açın ve sunucunuzun alan adını veya IP adresini kullanarak https:// ile erişmeye çalışın:

https://your_server_ip

veya

https://yourdomain.com

Kendinden imzalı bir sertifika kullandığınız için, tarayıcınız büyük olasılıkla bir güvenlik uyarısı gösterecektir. Bu uyarı, tarayıcının sertifikayı bilinen bir Sertifika Yetkilisi (CA) tarafından doğrulamadığı için ortaya çıkar. Uyarıda genellikle “Bağlantınız gizli değil”, “Güvenli değil” veya benzeri bir ifade yer alır. Bu uyarı, kendinden imzalı sertifikalar için normaldir ve bağlantınızın yine de şifrelendiği anlamına gelir. Genellikle “Gelişmiş” veya “Devam et” seçeneğini tıklayarak siteye erişmeye devam edebilirsiniz.

Eğer uyarıya rağmen siteye erişebiliyor ve adres çubuğunda bir kilit simgesi (ancak üzerinde bir uyarı işareti veya kırmızı bir çizgi olabilir) görüyorsanız, SSL yapılandırmanız başarılı olmuştur.

Yaygın Sorunlar ve Çözümleri

* Apache başlatılamıyor veya Syntax OK hatası değil:
* sudo apache2ctl configtest çıktısını dikkatlice inceleyin. Hata mesajı genellikle sorunun hangi dosyada veya hangi satırda olduğunu belirtir.
* Sanal host dosyalarınızdaki yazım hatalarını veya eksik direktifleri kontrol edin.
* Port 443’ün başka bir servis tarafından kullanılıp kullanılmadığını kontrol edin (sudo netstat -tulpn | grep 443).
* Tarayıcıda “Güvenli değil” uyarısı veya siteye erişilemiyor:
* Kendinden imzalı sertifika kullanıyorsanız bu uyarı normaldir. Güvenlik istisnası ekleyerek devam edebilirsiniz.
* Eğer siteye hiç erişilemiyorsa, UFW veya başka bir güvenlik duvarının 443 numaralı portu engellemediğinden emin olun (sudo ufw status).
* ServerName direktifinin ve sertifikanızdaki Common Name alanının tarayıcıda kullandığınız adresle eşleştiğinden emin olun.
* HTTP’den HTTPS’ye yönlendirme çalışmıyor:
* 000-default.conf dosyasındaki Redirect permanent satırını doğru yazdığınızdan ve ServerName ile Redirect URL’sinin doğru olduğundan emin olun.
* mod_rewrite modülünün etkin olduğundan emin olun (sudo a2enmod rewrite). Bu modül olmadan yönlendirme çalışmayabilir. Sonrasında Apache’yi yeniden başlatın.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu 14.04 üzerinde Apache için kendinden imzalı bir SSL sertifikası oluşturmanın ve yapılandırmanın tüm adımlarını ele aldık. Artık web sitenizin trafiğini şifreleyerek daha güvenli hale getirebilirsiniz. Kendinden imzalı sertifikaların tarayıcılar tarafından “güvenli değil” olarak işaretlendiğini unutmayın, ancak bu geliştirme ve test ortamları için kabul edilebilir bir durumdur.

SSS: Sıkça Sorulan Sorular

Kendinden imzalı sertifika nedir ve neden “güvenli değil” uyarısı verir?

Kendinden imzalı sertifika, herhangi bir üçüncü taraf sertifika yetkilisi (CA) tarafından doğrulanmamış, doğrudan sizin tarafınızdan oluşturulan bir sertifikadır. Tarayıcılar, sertifikayı bilinen ve güvenilen bir CA tarafından imzalanmadığı için doğrulayamaz ve bu nedenle kullanıcıya bir güvenlik uyarısı gösterir. Bu, bağlantının şifrelenmediği anlamına gelmez, sadece sertifikanın kimliğinin doğrulanmadığı anlamına gelir.

Gerçek bir SSL sertifikası nasıl alınır?

Gerçek (güvenilir) bir SSL sertifikası almak için, Let’s Encrypt gibi ücretsiz bir CA’dan veya Comodo, DigiCert, GlobalSign gibi ticari bir CA’dan sertifika talep etmeniz gerekir. Let’s Encrypt, Certbot aracı sayesinde kurulumu oldukça kolay ve otomatiktir. Ubuntu 14.04 için Let’s Encrypt kurulumu, bu rehberin kapsamı dışındadır ancak şiddetle tavsiye edilir.

Ubuntu 14.04’te bu adımlar Ubuntu 16.04/18.04 için de geçerli mi?

Evet, temel adımlar ve komutlar Ubuntu’nun sonraki sürümleri için de büyük ölçüde geçerlidir. Ancak, Apache’nin varsayılan yapılandırma dosyalarının yolları veya isimleri, bazı OpenSSL seçenekleri veya güvenlik duvarı komutları gibi küçük farklılıklar olabilir. Genel mantık aynı kalacaktır.

Sertifika süresi dolarsa ne olur?

Sertifikanızın süresi dolduğunda, tarayıcılar çok daha ciddi bir güvenlik uyarısı gösterecek ve genellikle siteye erişimi tamamen engelleyecektir. Bu nedenle, özellikle üretim ortamlarında, sertifikalarınızı süresi dolmadan yenilemeniz kritik öneme sahiptir. Kendinden imzalı sertifikaları yenilemek için, bu rehberdeki openssl req komutunu tekrar çalıştırarak yeni bir sertifika oluşturmanız ve Apache’yi yeniden başlatmanız yeterlidir.

Birden fazla alan adı için tek bir sertifika kullanılabilir mi?

Evet, tek bir SSL sertifikası birden fazla alan adı için kullanılabilir, ancak bu durumda bir SAN (Subject Alternative Name) sertifikası veya wildcard sertifikası almanız gerekir. Kendinden imzalı sertifika oluştururken Common Name alanına ek olarak SAN alanları da eklemek mümkündür, ancak bu işlem biraz daha karmaşıktır ve genellikle ayrı bir rehber konusu olabilir. Let’s Encrypt gibi CA’lar, birden fazla alan adını kapsayan sertifikaları kolayca oluşturmanıza olanak tanır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version