18 Haziran 2008

Apache'de SSL kullanımı

Debian üzerine kurulu Apache web sunucusunda SSL şifrelemesinden yararlanmak için takip edilmesi gereken adımlar aşağıdaki şekilde. Diğer dağıtımlarda da SSL modülünü yükleyip yeni bir Virtual host oluşturmanın yolu farklı olabilir ama genel ayarlar aynı kalıyor.

Öncelikle elinizde bir ssl sertifikası olması lazım. startcom gibi ücretsiz sertifika veren bir yeri tercih edebilirsiniz. Aşağıdaki komutla "self-signed" bir sertifika üretebilirsiniz ancak web tarayıcıların yeni sürümleri bu sertifikalarla karşılaştığında hata mesajı gibi görünen uyarılar gösteriyorlar. Bu komutun sorduğu sorulara size uygun cevapları verin, dikkat etmeniz gereken nokta "Common Name (eg, YOUR name) []:" sorusuna cevap olarak sunucunuzun tam adresini girmelisiniz, bu adres ziyaretçileriniz sayfaya girmek için https://'den sonra yazacakları adres, yani "denemesunucum.example.com" gibi.
openssl req -new -x509 -days 999 -nodes \
-out apache.pem -keyout apache.pem
Sertifikayı /etc/apache2/apache.pem olarak kaydedin. İşlemlerin geri kalanını /etc/apache2/ dizini altında yapın.

"sites-available/default" dosyasının "sites-available/ssl" adında bir kopyasını alın. Bu kopyaladığınız ssl dosyasının baş tarafını aşağıdaki biçimde değiştirin. Kalın ve eğikgörünenler yapacağınız değişiklikler.
NameVirtualHost *:443
<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/apache.pem
sites-available/default dosyasını da aşağıdaki şekilde değiştirin.
NameVirtualHost *:80
<VirtualHost *:80>
ports.conf dosyasına, Apache'nin https portu olan 443. portu dinlemesi için gereken satırı ekleyin.
Listen 80
Listen 443
Aşağıdaki komutlarla Apache'nin SSL modülünü ve yeni eklediğimiz SSL vhostunu etkinleştirin.
a2enmod ssl
cd sites-enabled; ln -s ../sites-available/ssl 001-ssl
Daha sonra güvenlik duvarından 443/tcp portunun açık olduğundan emin olun ve apache servisini yeniden başlatın. Bunu yaptıktan sonra https üzerinden sayfanıza erişip her şeyin düzgün çalıştığından emin olun.

4 yorum:

Nedim Ozan Tekin dedi ki...

merhabalar, peki ssl ayarlari yapilmis ve basarili bir sekilde calisan 2 adet portal servere, apache uzerinden nasil load balance yapabilirm?
Proxy balancer://mysslcluster balancer://mysslcluster/
BalancerMember https://xx1
BalancerMember https://xx2
/Proxy
httpde oldugu gibi bu sekilde bir balancing yapilamiyor? bir fikriniz olabilirmi

Gökdeniz Karadağ dedi ki...

SSL ile şifrelenmiş bir servisi load balancer üzerinden vermek istiyorsanız, SSL sertifikasını load balancer üzerine yerleştirmeniz gerekecek. Daha sonra arka plandaki sunuculara SSL şifrelemesi kullanmadan bağlantı kurulması gerekir.

Serkan Yıldırım dedi ki...

"SSL sertifikasını load balancer üzerine yerleştirmeniz gerekecek"

Bu işlemi nasıl yapıyorsunuz. Örnek ile anlatabilir misiniz? Ya da bildiğiniz bir kaynak varsa verebilir misiniz?

Gökdeniz Karadağ dedi ki...

Kullandığınız load balancer'a göre değişecektir. SSL load balancing destekliyorsa programın belgelerinden yardım alabilirsiniz.