Windows XP ya da Vista üzerinde Apache web sunucusu ile SSL kullanabilmek için ya Apache sunucusunun OpenSSL destekli olan sürümünü yüklemiş olmak ya da OpenSSL’in kendisini yüklemiş olmak gereklidir.OpenSSL destekli Apache web sunucusunu indirmek için buraya, OpenSSL’i yüklemek için ise buraya tıklayın. Eğer OpenSSL’i indirecekseniz bilgisayarınızda Visual C 2008 Redistributables‘ın kurulu olması gereklidir. Onu da indirmek için buraya tıklayabilirsiniz.Sisteminizde önceden Apache yüklüyse ama OpenSSL destekli mi değil mi bilmiyorsanız Bunun yerine Apache’nin OpenSSL destekli olan versiyonunu indirip kurmanızı tavsiye ederim.– Ön Hazırlığımızı Yapalım –
Gerekli dosyaları indirip kurduğunuzu varsayarak devam ediyorum. Öncelikle Apache sunucumuzun bin dizinini Pathortam değişkenine ekleyelim. Bunun için sırasıyla:
* Masaüstündeki Bilgisayarımikonuna sağ tıklayın, Özellikler‘e tıklayın.
* (Vista kullanıcıları) Açılan pencereden soldaki Gelişmiş Sistem Ayarları‘nı tıklayın.
* Gelişmişsekmesine tıklayın, en altta bulunan Ortam Değişkenleri butonuna tıklayın.
* Açılan pencerede Sistem Değişkenleri çerçevesinin altından “Path“i bulun ve aktif olan Düzenlebutonuna tıklayın.
* Değişken Değeri kutucuğuna tıklayıp en sona gidin.
* Bir (;) noktalı virgül karakterinin ardından Apache’nin “bin” dizininin yolunu tırnak içinde en sona ekleyin. (Standart kurulumlarda bu dizin: “C:Program FilesApache Software FoundationApache2.2bin”)
* Tüm pencereler kapanana kadar Tamam‘a tıklayın.
Başlat > Çalıştır’a cmd yazıp enterlayın ve ardından şu komutu çalıştırın:openssl version
OpenSSL 0.9.8i 15 Sep 2008 gibi bir sonuç alırsanız sisteminiz sertifika oluşturmak için hazır demektir. Çıktıya dikkat edin, eğer “WARNING: can’t open config file: /usr/local/ssl/openssl.cnf” şeklinde bir uyarı görürseniz ortam değişkenlerine bir ek daha yapmanız gerek:
* Yukarıdaki tarifi kullanarak Ortam Değişkenleri penceresini açın.
* Sistem Değişkenleri çerçevesinin altında bulunan Yeni butonuna tıklayın.
* Değişken Adı kısmına OPENSSL_CONF yazın.
* Değişken Değeri kısmına ise (burada kesinlikle tırnak kullanmayın) openssl.cnf dosyasının tam yolunu yazın. (Örn: C:Program FilesApache Software FoundationApache2.2confopenssl.cnf)
* Tüm pencereler kapanana kadar Tamam‘a tıklayın.
Değişikliklerin aktif olabilmesi için daha önce açtığımız tüm komut satırlarını kapatıp Başlat > Çalıştır’a cmd yazarak yeni bir tane açın. Yukarıdaki versiyon komutunu tekrar çalıştırdığınızda uyarı mesajının kaybolduğunu göreceksiniz. Artık sertifikamızı oluşturmaya başlayabiliriz.
– Self-Signed Certificate’imizi Oluşturalım –
Komut satırımız hala açıksa ilk olarak aşağıdaki komutla bilgisayarımıza özel RSA anahtarını oluşturalım. Bu anahtarı kullanarak daha sonra dilediğimiz kadar self-signed certificate oluşturabiliriz.openssl genrsa -des3 -out C:bilgisayarim.key 1024
Komut işlemini bitirdikten sonra bizden hazırladığı RSA anahtarı için şifre isteyecekir. Girdiğiniz şifreyi ileride de kullanabilme ihtimaline karşı bir yere not edin. Yazdığımız şifre yazarken görüntülenmez. Olası hatalara karşı aynı şifreyi iki kez girdikten sonra elimizde şuna benzer bir çıktı olmalı.Loading ‘screen’ into random state – doneGenerating RSA private key, 1024 bit long modulus……………………………………….Enter pass phrase for C:bilgisayarim.key:Verifying – Enter pass phrase for C:bilgisayarim.key:
Bu işlemden sonra RSA anahtarımızı PEM formatına çevirmemiz gerekli. Bunu yapmamızın nedeni, Apache sunucusu her durdurulup çalıştırıldığında bu dosyanın şifresini girmemizi de ister. Her seferinde bunu girmektense decryipt edilmiş PEM formatındaki dosyayı göstererek bize şifre sormadan işlemini halletmesini sağlarız. Bunun için aşağıdaki komutu çalıştırın:openssl rsa -in C:bilgisayarim.key -out C:bilgisayarim.pem
Bu komut bizden anahtar dosyamızın şifresini isteyecektir. Şifreyi yazıp enterladıktan sonra aşağıdaki çıktıyı görürseniz işlem tamamlanmış demektir.Enter pass phrase for C:bilgisayarim.key:writing RSA key
Eğer herşey yolunda gitmişse C: sürücümüzün altında bilgisayarim.key ve bilgisayarim.pem isminde iki tane dosya oluştuğunu göreceksiniz. Şimdi bu dosyalardan “.key” uzantılı olanı kullanarak sertifikamızı hazırlayabiliriz. Sertifika hazırlamak için aşağıdaki komutu çalıştırın:
openssl req -new -x509 -nodes -sha1 -days 365 -key C:bilgisayarim.key -out C:localhost.crt
Bu komutla 1 yıl geçerli olacak bir sertifika oluşturmuş olacağız. Komut bizden sırasıyla şu bilgileri girmemizi isteyecektir:C:bilgisayarim.key anahtarının şifresi, Ülke Kodu (2 karakter olmak zorunda), Şehir adı, Semt Adı, Firma Adı, Firma Ünvanı, Ortak Ad, E-Posta Adresi. Bunların içinde sadece “Ortak Ad (Common Name)” bizim için önemli. Sertifikayı hangi domain için hazırlıyorsak buraya o domaini yazmamız gerekir. Şimdilik kendi makinemizde kullanacağımız için “localhost” yazmamız yeterli. Eğer siz de benim gibi “hosts” dosyasında farklı domainler tanımlayıp kullanıyorsanız buraya bu sertifikayı kullanmak istediğiniz domaini yazın. Sonuç olarak elimizde aşağıdakine benzer bir çıktı olmalı:
Enter pass phrase for C:bilgisayarim.key:Loading ‘screen’ into random state – doneYou are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter ‘.’, the field will be left blank.—–Country Name (2 letter code) [AU]:TRState or Province Name (full name) [Some-State]:IstanbulLocality Name (eg, city) []:EyupOrganization Name (eg, company) [Internet Widgits Pty Ltd]:SniperOrganizational Unit Name (eg, section) []:Web DeveloperCommon Name (eg, YOUR name) []:localhostEmail Address []:[email protected]
Herhangi bir sorun çıkmadıysa localhost.crt isimli sertifika dosyamız C: dizininin altında bizi bekliyor olmalı.
– Apache’nin SSL modülünü aktive etme –
Apache sunucumuz çalışır haldeyse aşağıdaki komutla sunucu servisini durdurun.httpd -k stop
* Apache’yi kurduğunuz dizinin altında bulunan conf dizinini açın.
* ssl isminde bir klasör oluşturup “bilgisayarim.pem” ve “localhost.crt” dosyalarını bu klasöre taşıyın.
* “conf” dizininin içindeki “httpd.conf” dosyasını not defteri ile açın ve “Listen 80” yazan satırı bulup hemen altında şunu ekleyin:
Listen 443
Farklı bir IP adresi kullanıyorsanız IP adresinizden sonra “:” yazıp buna 443 ekleyin. (Örn: Listen 192.168.2.42:443)LoadModule ssl_module modules/mod_ssl.so
Satırını bulup başında diyez “#” varsa bunu silin.Aşağıdaki direktifleri (gerekiyorsa DocumentRoot’u düzenleyerek) httpd.conf içine ekleyin, dosyayı kaydedip kapatın.
SSLEngine onSSLCertificateFile conf/ssl/localhost.crtSSLCertificateKeyFile conf/ssl/bilgisayarim.pemDocumentRoot “C:/Program Files/Apache Software Foundation/Apache2.2/htdocs”DirectoryIndex index.html index.php

Komut satırınahttpd -k start
yazarak Apache web sunucusunu tekrar çalıştırın. Herhangi bir hata uyarısı almadıysanız sunucunuz artık https kullanmaya hazır. Hemen test edelim https://localhost.Eğer Apache başlar, ancak aşağıdakine benzer bir uyarı verecek olursa https’i kullanamazsınız.[error] VirtualHost 192.168.2.42:80 — mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
Bu hatayı düzeltmek için “httpd.conf” dosyasında ya da kendi hazırladığınız herhangi bir konfigürasyon dosyasında “NameVirtualHost” tanımladıysanız bunun değerinin sonuna “:80” eklemeniz gerekli. Örneğin benim bilgisayarımda bu özellik şöyle tanımlı:
NameVirtualHost 192.168.2.42:80
Siz de gerekli değişikliği yaptıktan sonra Apache sunucusunu durdurup tekrar çalıştırın:httpd -k stophttpd -k start
ya dahttpd -k restart
Artık kendi bilgisayarınızda Apache web sunucusu üzerinden SSL kullanmaya başlayabilirsiniz.Not: Bu yazının bir kopyası da http://tuncay.kinali.net/kendi-bilgisayarinizda-ssl-ile-calisin-xpvista-apache.html adresinde yayınlanmaktadır.