|
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/
|