22 Şubat 2009 Pazar

SSL Sertifikasi Olusturma (Fedora 9 - Apache)

Hersey makinamda bulunan sirket web sitesinin test versiyonunun guvenli sayfalarini kontrol etmem esnasinda ortaya cikti. Arkadasimin ssh yapip lokalimde olusturdugu ssl sertifikasinin gecerlilik suresi dolmustu ve benim de nasil yapildigi hakkinda en ufak bir fikrim yoktu :)

Oncelikle; yaptigim arastirmada ssl sertifikasinin suresinin uzatilamadigini, bunun yerine yeniden olusturulmasi gerektigini ogrendim. Bu islemi 2 sekilde yapabiliyoruz: ilki "openssl" ile, digeri de "/etc/pki/tls/certs/Makefile" scriptini kullanarak. Aslinda Aslinda bu script zaten asagida anlatacagim ornegi, sertifika dosya adini parametre olarak almak yoluyla yerine getiriyor(ornek : /etc/pki/tls/certs/make localhost.crt). Scripti acip incelediginizde goreceksiniz.

On bilgi
----------------------------------
Fedora 9'da
sertifika (.crt) dosyalari /etc/pki/tls/certs
key (.key) dosyalari ise /etc/pki/tls/private altinda tutuluyor.
*ssl - Secure Sockets Layer
*tls - Transport Layer Security
*pki - Public Key Infrastructure

openssl ile olusturma

  1. Konsol acip root olalim :
    [ccanaslan@ccanaslan ~]$ su -

  2. Sertifika dosyalarinin bulundugu dizine gidelim :
    [root@ccanaslan ~]# cd /etc/pki/tls/certs

  3. 1024 bit uzunlugunda (default 512), des3 cipher ile encrypt edilmis, localhost.key adinda RSA private key'i olusturalim :
    [root@ccanaslan certs]# openssl genrsa -des3 1024 > localhost.key

  4. Sifre isteyecek, min.4 haneli bir sifre girin. Ne oldugu cok onemli degil, zaten key'in sifre sorma rutinini disable edecegiz. Yoksa apache'yi her resetlemede bu sifreyi soruyor :) Sifreyi verify ettikten sonra localhost.key dosyasinin olustugunu goreceksiniz.

  5. kisaca; localhost.key key'ini kullanarak, 1 yil gecerli olacak olan localhost.crt sertifika dosyasini olusturalim :
    [root@ccanaslan tls]# openssl req -utf8 -new -key localhost.key -x509 -days 365 -out localhost.crt -set_serial 0

  6. 4. maddede girmis oldugunuz sifreyi soracak,girip enter'a basin.

  7. Bu noktada, sizden sertifika tanimlamalarinda kullanilacak bazi bilgiler isteyecek. Bu bilgileri doldurabilir ya da enter'a basarak default degerleri almasini saglayabilirsiniz. (Default degerler /etc/pki/tls/openssl.cnf dosyasinda tutulmakta, isterseniz degistirebilirsiniz. Asagidaki gosterim, ilgili dosyanin degistirilmesinden sonraki halidir). Common Name (eg, your name or your server's hostname) []: sorusunu "localhost.localdomain" girerek gecelim. Goruntu asagidakine benzer olacaktir :
    [root@ccanaslan certs]# openssl req -utf8 -new -key localhost.key -x509 -days 365 -out localhost.crt -set_serial 0
    Enter pass phrase for localhost.key:
    You are about to be asked to enter information that will be incorporated
    into 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 blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [TR]:
    State or Province Name (full name) [Maslak]:
    Locality Name (eg, city) [Istanbul]:
    Organization Name (eg, company) [Biletix A.S.]:
    Organizational Unit Name (eg, section) [Software Development]:
    Common Name (eg, your name or your server's hostname) []:localhost.localdomain
    Email Address []:ccanaslan@biletix.com
    [root@ccanaslan certs]#

  8. Artik elimizde localhost.key ve localhost.crt dosyalari mevcut. Bu dosyalari "chmod 600 localhost*" komutunu kullanarak sadece root tarafindan okunup yazilabilecek seviyeye getirelim
    [root@ccanaslan certs]# ll localhost*
    -rw-r--r-- 1 root root 1407 2009-02-11 18:29 localhost.crt
    -rw-r--r-- 1 root root 963 2009-02-11 18:18 localhost.key
    [root@ccanaslan certs]# chmod 600 localhost*
    [root@ccanaslan certs]# ll localhost*
    -rw------- 1 root root 1407 2009-02-11 18:29 localhost.crt
    -rw------- 1 root root 963 2009-02-11 18:18 localhost.key

  9. localhost.key dosyasini /etc/pki/tls/private dizinine tasiyalim (bkz. On bilgi) ve bu dizine gecelim.
    [root@ccanaslan certs]# mv localhost.key ../private/

    [root@ccanaslan certs]# cd ../private/

  10. 4. maddede bahsettigim, sifre sorma rutinini iptal etme islemini yapalim:
    [root@ccanaslan private]# cp localhost.key localhost.bak
    [root@ccanaslan private]# openssl rsa -in localhost.bak -out localhost.key
    Enter pass phrase for localhost.bak:
    writing RSA key

  11. Apache'yi restart edelim:
    [root@ccanaslan private]# apachectl restart




/etc/pki/tls/certs/Makefile scriptini kullanarak olusturma

Bu islem cok daha basit. Zira soz konusu script ilk yontemde anlatilan islemleri, parametre olarak aldigi dosya adi ile gerceklestiriyor:
[root@ccanaslan ~]# cd /etc/pki/tls/certs
[root@ccanaslan certs]# make localhost.crt

Bu noktadan itibaren yapilacalar, ilk yontemin 9.maddesinden sonrasi ile aynidir:
[root@ccanaslan certs]# mv localhost.key ../private/
[root@ccanaslan certs]# cd ../private/
[root@ccanaslan private]# cp localhost.key localhost.bak
[root@ccanaslan private]# openssl rsa -in localhost.bak -out localhost.key
Enter pass phrase for localhost.bak:
writing RSA key
[root@ccanaslan private]# apachectl restart

Bitti :))