Glavna arrow Linux/Unix arrow Konfiguracija arrow Apache + SSL petak 25 jul 2008 
Sadrzaj
Glavna
Forum
Linux/Unix
Windows
Mreze
Sigurnost
Hardware
Knjige
Mobilni/PDA
Preuzimanje
Whois
Web Alati
Adresar
Galerija
Pretraga
E-mail
Kontakt
Pristup





Zaboravili ste lozinku?
Nemate nalog? Napravite nalog
 
samo po 1o1.com
po celom SCG web-u
Apache + SSL | Štampaj |
Autor Tim 1o1   
Kako instalirati Apache-SSL server?


--------------------------------------------------------------------------------

Kako do sigurnih http veza na nesigurnom Internetu.


--------------------------------------------------------------------------------

1. Gde se nalazi zadnja verzija ovog dokumenta?
Poslednja verzija ovog dokumenta nalazi se na adresi http://linux.tron-inter.net

2. Predgovor
Apache SSL je bio preko tri godine jedini nacin dobijanja secure http servera (https). Medjutim, pojavio se mod_ssl koji se odlikuje cistijim kodom i mnogo boljom dokumentacijom (koja ovaj mini-KAKO cini skoro nepotrebnim :-). Prva verzija ovoga dokumenta je nastala iz potrebe da se objasne i priblize korisnicima tajne Apache-SSL patcheva koji su imali svoje probleme i bubice. mod_ssl je, sa druge strane, jednostavan za instaliranje, radi veoma dobro, i bez problema saradjuje sa ostalim modulima. Zbog toga ovaj dokumet od verzije 0.5 vise ne spominje originalne Apache-SSL patch-eve.

3. Gde naci potrebne fajlove?


3.1 mod_ssl
Otici na http://www.modssl.org/ i skinuti zadnju verziju (ovde ce biti reci o verziji mod_ssl-2.3.6-1.3.6)

3.2 OpenSSL biblioteka
Prethodne verzije SSL dodataka za Apache su se oslanjale na SSLeay biblioteku, dok noviji mod_ssl koristi OpenSSL biblioteku (ovde je rec o verziji openssl-0.9.3a).

Mozete je naci na http://www.openssl.org/

3.3 Apache
Naravno, potreban Vam je i sam Apache web server. Nega mozete naci na http://www.apache.org/dist/. Pazite na to da skinete odgovarajucu verziju (tj. onu za koju je predvidjen modul).

4. Kompajliranje


4.1 OpenSSL
Raspakujte arhivu OpenSSL-a, udjite u njen direktorijum i pokrenite kompajrianje koriscenjem:

> tar xvfz openssl-0.9.3a.tar.gz
> cd openssl-0.9.3a
> sh config no-idea -fPIC
> make

Nakon nekog vremen kompajliranje ce se zavrsiti.

4.2 Apache i mod_ssl
Raspakujte arhivu Apache-a koriscenjem:

> tar xvfz apache_1.3.6.tar.gz

Samo prevodjenje i kompiliranje programa ce uslediti nakon sto konfigurisete mod_ssl.

> tar xvfz mod_ssl-2.3.6-1.3.6.tar.gz
> cd mod_ssl-2.3.6-1.3.6
> ./configure --with-apache=../apache_1.3.6
--with-ssl=../openssl-0.9.3a
--prefix=/usr/local/apache
--enable-shared=ssl
--enable-module=rewrite
--add-module=../mod_auth_mysql.c

Zadnja opcija (--add-module) je dodana samo zato da bi se pokazalo kako dodati neki modul ako kompajlirate mod_ssl sa Apache-om. Ukoliko Vam ne treba autorizacija u Apache-u koriscenjem MySQL baze, slobodno izostavite --add-module.

Predzadnja opcija (--enable-module=rewrite) ukljucuje rewrite modul koji je standardni deo Apache distribucije, ali se ne ukljucuje u standardnoj konfiguraciji. Kako je modul veoma koristan, svakako preporucujemo njegovo ukljucivanje i proucavanje dokumentacije o njemu.

> cd ../apache_1.3.6
> make

4.3 Cudne greske kod kompajliranja Apache-a. Ako vam se desi da kod kompiliranja Apache-a sa dodatnim modulima dobijete pogresku koja glasi:

+ doing sanity check on compiler and options
** A test compilation with your Makefile configuration
** failed. This is most likely because your C compiler
** is not ANSI. Apache requires an ANSI C Compiler, such
** as gcc. The above error message from your compiler
** will also provide a clue.
Aborting!

nemojte odmah ocajavati. Naime, najverovatnije je greska u tome da se neki od modula nije mogao kompajlirati i linkovati sa nekom od biblioteka. Kako otkriti sa kojom? Idite u src poddirektorijum i pokrenite ./helpers/TestCompile -v sanity. To je zapravo shell skripta koja se pokrece, a opcija -v ce ispistati detaljniji opis greske. U nasem slucaju ona je bila:


/usr/bin/ld: cannot open -lmysqlclient: No such file or directory

sto znaci da je unutar modula u konfiguracijskom delu trebalo promeniti putanju do mysqlclient biblioteke.

5. Izrada probnog certifikata
Nakon sto se apache server (nadam se uspesno) kompajlira, mozete napraviti svoj prvi certifikat koriscenjem:

> make certificate TYPE=custom

Mislim da cete znati sto treba upisati na koje pitanje. Narocito je vazno da za Common Name unesete tacno ime servera jer Vam u protivnom certifikat nece raditi. Ako Vas server ima vise imena (CNAME-a), morate izabrati jedno za SSL veze i koristiti samo njega jer cete inace morati imati onoliko certifikata koliko zelite i imena servera. Dobar primer za takvo ime je secure.proba.co.yu ili ssl.proba.cp.yu.

Drugo zanimljivo pitanje je da li zelite zastititi svoje privatne kljuceve. Kako je to dobra ideja ukoliko postoji mogucnost da neko dobije pristup racunaru (npr. ako je racunar koji posluzuje https server visekorisnicki) to ima i svojih nedostataka. Svaki put kod pokretanja servera moracete upisivati tu istu sifru. To zapravo znaci da se server nece moci da se startuje bez bilo cijeg prisustva .

Za razliku od starijih verzija, ovde razmatrana verzija sama kreira certifikat koji Vam traje 365 dana.

Ukoliko nameravate ozbiljno da koristite https moracete da kupite pravi certifikat. Jedna od dobrih adresa je http://www.thawte.com/

6. Instaliranje servera
Nakon svega ovoga, ovo je stvarno jednostavno:


--------------------------------------------------------------------------------

> make install


--------------------------------------------------------------------------------

Server ce biti instaliran u /usr/local/apache.

7. Pokretanje i isprobavanje servera
Sada mozete server i pokrenuti:

> /usr/local/apache/bin/apachectl startssl

Nakon sto se server pokrenuo, na portu 8080 nalazi se obicna, a na 8443 https verzija vasih stranica. Kako Vas certifikat (koji ste napravili sa make certificate) nije potpisala nijedna organizacija koja se bavi izdavanjem digitalnih certifikata, mora cete u Netscape-u odluciti da zelite da prihvatate takve certifikate prvi put kada pristupite svojim stranicama koriscenjem https://secure.proba.hr:8443/.

Vazno je takodje napomenuti da ce Inernet Explorer odbiti da kontaktira servere koji nemaju certifikat od nekog od priznatih CA-ova.

8. Konfigurisanje servera


Sada mozete promeniti port 8443 u standardni SSL port 443, a port 8080 prebaciti na standardni 80. Tako cete istom sadrzaju moci da pristupate i preko http-a i https-a. To verovatno nije ono sto ste zeleli, ali konfigurisanjem virtualnih hostova resicete sta je zasticeno a sta nije...

9. Moguci problemi
Uz malo srece, sve radi kako bi i trebalo. Medjutim, mozda cete naici na sledece probleme (popis problema ukljucuje i starije verzije programa i/ili modula):

Starije verzije apache-ssl-a su odbijale da ucitaju certifikate kod pokretanja servera. To je doduse do danas sredjeno (to se odnosi na servere verzije 1.1.3 sa SSLeay-om 0.6.x), ali nikad se ne zna. :-(
Ukoliko ste koristili apache 1.2.6 i SSLeay 0.8.0, nece Vam raditi cache-ing. Zbog toga dodajte
--------------------------------------------------------------------------------


#define CACHE_SESSIONS FALSE


--------------------------------------------------------------------------------

u apache_ssl.c da biste iskljucili tu opciju. Takodje, morate staviti komentar na sve *Cache* direktive u SSLeay/conf/httpd.conf fajlu. Iako bi se po source kodu moglo zakljuciti da bi to trebalo raditi od verzije 0.8.0, nisam bas sasvim siguran u to. Naime, sa SSLeay-om 0.9.0b (i ukljucenim cache-ingom) server je pri startanju jednostavno bacio core. Kod Apache 1.3.0 servera, sa druge strane radi cache-ing ako se koristi TCP socket, a ne port. To je probano sa SSLeay-om 0.8.0.

Sve radi savrseno, osim sto httpsd ne radi na portu 443? Pa, zapravo potrebno je pokrenuti server kao root (inace se ne moze bind-ovati na portove manje od 1024). Ako jos uvek ne radi, proverite svoje firewall rule-ove!
Ponekad Apache radi a ne kompajlira zbog toga sto ne moze naci neki include fajl ili biblioteku. To je cest slucaj kada dodajete module. mod_rewrite npr. koristi ndbm.h koji se na RedHat distribuciji nalazi u /usr/include/db1/ndbm.h a ne u /usr/include/ndbm.h gde ga on ocekuje. Takodje, pogledajte u mod_auth_mysql.c pre kompajliranja


10. Na kraju, disclaimer, zasto ovaj dokument?
Puno srece u koriscenju Apache sa SSL-om i ukoliko imate nerazjasnjenih problema mozete kontaktirati autora na Ova adresa je zaštićena od robota. Potreban vam je Java-skripta da bi ste je videli.

Takodje, uzmite u obzir da komercijalna resenja kostaju desetine hiljada dolara, pa ovakva (iako potpuno funkcionalna) ipak imaju svoje bubice.

Za svoje podatke, mogucnost koriscenja i eventualne gubitke zbog nemogucnosti pristupa serveru odgovarate iskljucivo i samo Vi (std.disclaimer?).

Mozda se pitate zasto smo uopste napisali ovaj dokumenat? Pa, kako sam instalirao nekoliko apache-ssl servera shvatio sam (na najtezi nacin -- na vlastitoj kozi) da cela procedura nije jednostavna i bez problema. Tako je nastala prva verzija ovoga dokumeta, u zelji da drugi ne moraju prolaziti isti bolan put. Tokom vremena, alati su postajali sve bolji, a ovaj dokument sve duzi. Na kraju sam odustao od podrzavanja Apache-SSL patch-a jer je mod_ssl bio mnogo cisce i jednostavnije resenje. Da danas instaliram prvi Apache sa mod_ssl-om ovaj dokumet verovatno nikada ne bi ni nastao.

11. Adrese na mrezi (gotovi binary!)
"Ma sve je to super, ali ja sam korisnik Crvenog Sesirica (RedHat) i potreban mi je samo rpm da instaliram to cudo..." ftp://ftp.replay.com/pub/replay/pub/redhat/i386/

 
: Glavna :: Forum :: Linux/Unix :: Windows :: Mreze :: Sigurnost :: Hardware :: Knjige :: Mobilni/PDA :: Preuzimanje :
Powered by 1o1
PodignimoStupove!