SSL sertifikaları web sitelerine istemcilerin güvenle giriş ve veri aktarımı yapmasını olanak sağlayan aracılardır. SSL temelde iki temel işlevi yerine getirir.
- Şifreleme
- Kimlik doğrulama
Bu işlevleri yerine getirecek SSL sertifikalarının güvenilir sertifika otoriteleri tarafından imzalanması gerekir. Bu bir nevi kefil olma işlemidir. Sertifika otoritelerinin güvenilir olup olmadığına da pratikte web tarayıcılar karar verirler.

Süreç nasıl işliyor?
- İstek Oluşturulur: Sunucu tarafında bir sertifika imzalama isteği (CSR) üretilir.
- Otoriteye Gönderim: Bu istek doğrulanmak üzere otoriteye iletilir.
- İmzalama: Otorite, kendi anahtarıyla isteği imzalayıp sunucuya geri verir.
- Güncelleme: SSL sertifikası sunucuya yüklenerek aktif edilir.

SSL sertifikaları otoriteler tarafından çok çok fazla ücretlere yenilenebiliyor, yani yenilenebiliyordu. Günümüzde çoğu web sitesi Let’s Encrypt‘in sunduğu SSL hizmeti sayesinde ücretsiz olarak sertifika alıp güncelleyebiliyorlar.
Let’s Encrypt siteyi doğrulamak için iki basit yöntem kullanıyor.
- Web sitesinde kendilerinin oluşturduğu bir html sayfasını yayınlayıp sitenin size ait olduğunu doğrulamanız
- DNS kaydına sitenin size ait olduğunu doğrulayan bir ifade bırakmanız.
Kullandığı yöntemlerle de günümüzdek sertifika otoritelerinin büyük bir bölümüne kıyasla çok daha yüksek bir güvenlik sağlayabiliyor.
Let’s Encrypt ürettiği sertifikaları 90 günlük olarak sağlıyor, 90 günün sonunda otomatik olarak yenilemenize imkan sağlıyor (bu da sertifika otoritelerinin sağlamadığı bir hizmettir). Diğer sertifika otoritelerinden alınan sertifikaların ise belirlenen süre sonunda kullanıcı tarafından elle yeniden doğrulanması ve sisteme manuel olarak tanımlanması gerekmekte :/
HostName Değişimi
Web sunucularını yönetirken IP adreslerini kullanmak yerine doğrudan isimlerle çalışmayı tercih edebiliriz. Bu işlemi tek komutla gerçekleştirebiliriz.
Hostname’i değiştirmek için,
komutunu yazıyoruz ardından doğrulamak için,

komutunu girip doğru şekilde uygulandığını görüyoruz.
Bu adresi kullanabilmek için /etc/hosts dosyasına da aşağıdaki düzenlemeyi yapmamız gerekiyor.

Not: Döngüsel ip (127.0.0.1) ‘i kapattım. Sebebi hata almamdı 🙁 Şöyle ki, aynı hostname birden fazla ip adresi ile çakışmamalıymış, bu bize hata getirirmiş…
Ayrıca bu işlemi yaptıktan sonra sistemi yeniden başlatmakta fayda var. Çünkü kimi uygulamalar hostname kullanarak çalışıyor olabilir, tek tek hangi uygulama kullanıyor araması yapmaktansa sistemi yeniden başlatıp doğru değerlerle çalışmalarını sağlayabiliriz.
Sistemi yeniden başlatmasak da hostname güncellenmiş olacaktır.
SSL Sertifikalarının Üretimi
2 farklı sistemde ve 2 farklı web sunucusunda toplamda 4 adet SSL sertifikasının nasıl üretildiğine bakalım ve aradaki farkları inceleyelim.
- Debian Apache
- Debian Nginx
- Rocky Apache
- Rocky Nginx
Debian Apache2 SSL
İlk aşamada kullanacağımız openssl paketlerinin bulunup bulunmadığına bakalım.
Benim sistemimde ” /usr/bin/openssl “‘de bulunuyordu. Bulunmasaydı,
İlk önce openssl’i kullanarak key’i üretelim. Alan adlarına /etc/hosts dosyasına yazdığımız alan adımızı gireceğiz. Key’i üretmeden önce /etc/apache2/certs adında bir dizin oluşturup oraya gidelim. Çünkü az sonra gireceğimiz komut bulunduğu dizinde crt ve key üretecektir.
İlgili dizine gidip kontrol edelim.

Şimdi ürettiğimiz sertifikayı sitemize uygulamak için ” /etc/apache2/sites-available “dizinine gidip ” 000-default.conf ” dosyasında değişiklikleri yapalım.

Bu işlemden sonra dosyayı kaydedip kapatalım. Bir hata yaptık mı kontrol etmek için,
” Syntax OK ” çıktısını aldıysak devam edebiliriz. Portları dinleyelim.

En alt satırda 443’ün de dinlendiğini görüyoruz, sitemizi kontrol edelim.

Başarılı şekilde SSL sertifikamız sitemize uygulandı.
Rocky Apache2 SSL
Sertifikayı üretmek için gerekli paketleri indirelim.
Ardından paketleri listeleyelim.

Sertifikamızı doğrulamak için,

Bu uyarı sertifikanın dünyaca tanınan bir otorite tarafından değil, bizim tarafımızdan oluşturulduğunu gösterir mahiyette bir uyarı.
Biz oluşturduğumuz SSL sertifikasını web sitesine uygulamakta başarılı olduk.

Biz Debian dağıtımında Rocky’e nazaran daha fazla uğraştık bunun sebebi, Rocky sunucularında sscg aracı sayesinde çok hızlı bir şekilde sunucuyla birlikte SSL sertifikası üretebiliyor olmamızdır.
Rocky Nginx SSL
Burada farklı olarak işimizi kolaylaştırmak için bir Apache2 paketi olan mod_ssl’i kuracağız.
Kurduktan sonra inen paketleri listelediğimizde /usr/libexec/httpd-ssl-gencerts inceliyoruz ve otomatik olarak SSL sertifikaları üretmemize yarayan bir script olduğunun farkına varıyoruz.
Scriptini çalıştırmadan önce içerisine bir göz atalım, oluşturacağı key ve crt dosyalarını nereye koyuyormuş ona bakalım.

Burada gördüğümüz üzere,
- crt dosyası, /etc/pki/tls/certs/localhost.crt
- key dosyası, /etc/pki/tls/private/localhost.key
konumlarında bulunuyorlar.
Scripti çalıştıralım.
Sonrasında nginx.conf dosyamızın içine gidip SSL ayarlarını aktif edelim.

Not: Firewall açık kalmış olabilir. Hata almamak için kapatıyoruz.
Curl kullanarak veya tarayıcı üzerinden denemesini yaptığımızda, başarılı bir şekilde SSL sertifikamızı uyguladığımızı görüyoruz.


Debian Nginx SSL
Openssl’in kurulu olup olmadığını kontrol edelim.
Benim sistemimde kuruluydu.
/etc/nginx altında certs adında bir dizin oluşturuyoruz. Ardından oraya gidiyoruz.
openssl ile sertifikayı üretiyoruz.
/sites-available/default dosyasını açıp değişiklikleri uygulayalım,

return 301 https://$host$request_uri; satırıyla yapılacak tüm bağlantıları https’e yönlendirdik. Bu da http://site ile yapılacak bağlantıların da https olacağını gösterir.
curl ile denemeyi yaptığımızda,

301’i gördük.

Başarıyla ürettiğimiz tüm SSL sertifikalarını da sitelerimize uygulamış olduk.
Virtual Hosting
Aynı IP üzerinde birden fazla hosting barındırabiliriz buna da ” virtual hosting ” deriz. Bunu oluşturmak için ilk önce Debian Apache makinemizde /etc/httpd/conf.d yolu altında iki adet virtual host dosyası oluşturuyorum.

kamp.linux.org.tr.conf

linux.org.tr.conf

Ardından /var/www/kamp ve /var/www/linux’a gidip burada varlığını belirttiğimiz dosyaları oluşturalım.
/var/www/kamp/index.html
Merhaba kamp
/var/www/linux/index.html
Merhaba linux
Bunları da tamamladıktan sonra /etc/hosts dosyasına gidip sanal hostlarımızı kaydedelim.

Curl ile deneyelim,

Virtual hosting yapılandırmasını başarıyla tamamladık.
Bazı detaylar,
- IP adresi ile curl atmaya çalıştığımızda,

gördüğümüz üzere ilk eklediğimiz .conf dosyasının host’u çalışıyor.
Konumuzla çok alakası yok ancak bilgisayar dns çözümlemesi yaparken neden önce /etc/hosts dosyasına bakar sorusunun cevabı,

burada yer alan /etc/nsswitch.conf dosyasıdır.
