lighttpd ve “gerçek” SSL sertifikaları
Önceki yazımda, SSL sertifikasını yerleştirdiğimden bahsetmiştim. Bu yazımda ise SSL sertifikasını lighttpd’ye nasıl yerleştirdiğimi açıklayayım.
Öncelikle lighttpd’nin SSL desteğinin açık olup olmadığını öğrenin:
ras0ir@hamster [~] % lighttpd -v
lighttpd-1.4.x (ssl) - a light and fast webserver
Build-Date: Mar 25 2009 15:04:47
Belirttiğim gibi eğer “(ssl)” yazıyorsa, lighttpd ssl desteklemektedir. Gelelim yapılması gereken işlemlere:
Öncelikle sertifikalarınıza dair bir klasör oluşturmanızı tavsiye ederim. Nitekim düzenli bir şekilde çalışmak kargaşadan uzak tutar sizi. Ben şahsen /etc/lighttpd/ssl klasörü altında tutuyorum gerekli dosyaları. Ayrıca neyin ne olduğunu da not alıyorum ki yenilemek gerektiğinde hatırlayayım.
Öncelikle private bir key oluşturarak işe koyulalım:
openssl genrsa -des3 -out alanadi.key 1024
Bu komutu verdiğinizde dikkat etmeniz gereken husus Common Name direktifidir. Zira alan adınızı burada tanımlayacaksınız. Yani SSL sertifikasının geçerli olacağı alan adını burada http:// kullanmadan yazmalısınız.
openssl rsa -in alanadi.key -out alanadi.nopass.key
komutunu vererek “mümkün olduğunca parola kullanmayarak (son kısımda parola kullanmak isteyip istemediğinizi sorar)” private key’inizi oluşturun.
Ardından, CSR (Certificate Signing Request) oluşturmanız istenecektir. Oluşturulan CSR, SSL sertifikasını sağlayacak servis sağlayıcıya aktarılması gereken anahtardır. CSR oluşturmak için:
openssl req -new -key alanadi.nopass.key -out alanadi.csr
Böylelikle komutu verdiğiniz dizinde, alanadi.csr isimli CSR dosyası oluşacak, bunu SSL sertifikası aldığınız yere vereceksiniz.
Servis sağlayıcınıza CSR’ı aktardıktan sonra, bir kaç dakika (yaklaşık 10 dakika içinde) sertifikanız servis sağlayıcınız tarafından size aktarılacaktır.
Aktarılan sertifikayı alanadi.crt olarak kaydedebilirsiniz. Kaydettikten sonra,
cat alanadi.nopass.key alanadi.crt > alanadi.pem
komutunu verdiğiniz takdirde, kullanıma hazır bir sertifikanız olacaktır. Sıra bu sertifikayı lighttpd’de nasıl kullanacağımıza geliyor. lighttpd.conf üzerinde kullanabileceğiniz gibi, oluşturacağınız başka bir yapılandırma dosyasını lighttpd.conf’da include ettirebilirsiniz.
Mesela ben lighttpd.conf içerisinde:
include "vhost/ssl.conf" direktifini kullanıyorum.
ssl.conf dosyamın içeriği ise:
$SERVER["socket"] == "alanadi:443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/alanadi.pem"
}
Tekrar hatırlatmakta fayda görüyorum, ayrı bir dosya kullanmak yerine doğrudan lighttpd.conf dosyasına da yazabilirsiniz. Tüm işlerinizi hallettikten sonra lighttpd’yi tekrar başlatabilirsiniz.
Yeri gelmişken değineyim, belirli bir alan adı için, bütün http taleplerini https’e aktarmak için:
$HTTP["scheme"] =~ "http$" {
url.redirect = ( "^/(.*)" => "https://alanadi/$1" ) }
yapısını kullanabilirsiniz.
Örneğini ise http://code.archlinux.org.tr adresinde görebilirsiniz. Umarım bu yazı işinize yarar.