Strežnik na osnovi strežnika Apache

Uvod

Najbolj prilagodljiv sistem za Subversion dobite pri uporabi strežnika Apache. Njegova namestitev je sicer nekoliko bolj zahtevna, vendar ima v primerjavi z ostalimi strežniki številne prednosti:

WebDAV

Strežniki Subversion, postavljeni na strežniku Apache, uporabljajo protokol WebDAV, ki ga podpirajo številni ostali programi. Ta omogoča, da naprimer priklopite skladišče kot “internetno mapo” v Windowsovem Raziskovalcu in do nje dostopate kot do katerekoli druge mape v datotečnem sistemu

Brskanje po skladišču

V spletni brskalnik lahko vpišete naslov URL skladišča in brskate po vsebini, ne da bi imeli nameščenega odjemalca za Subversion. To omogoča dostop do podatkov precej širšemu krogu uporabnikov.

Avtentikacija

Uporabite lahko prav vse avtentikacijske mehanizme, ki jih podpira Apache, vključno z SSPI in LDAP.

Varnost

Ker je strežnik Apache zelo stabilen in varen, je prav tako varno tudi vaše skladišče. Uporabite lahko tudi enkripcijo SSL.

Namestitev strežnika Apache

Za namestitev strežnika Apache potrebujete računalnik s sistemom Windows 2000, Windows XP+SP1, Windows 2003, Vista ali Server 2008.

Pozor

Prosimo, upoštevajte, da lahko uporaba operacijskega sistema Windows XP brez prvega paketa popravkov (service pack 1) pripelje do nepravinih podatkov v omrežju in tako pokvari skladišče!

  1. Prenesite si zadnjo različico spletnega strežnika Apache z naslova http://httpd.apache.org/download.cgi. Poskrbite, da prenesete različico 2.2.x - različica 1.3.x.x ne bo delovala!

    Namestitveni program MSI za spletni strežnik Apache dobite, če kliknete na other files in greste na pot binaries/win32. Lahko izbere datoteko apache-2.2.x-win32-x86-openssl-0.9.x.msi (vključuje tudi OpenSSL).

  2. Ko ste prenesli namestitveni program za strežnik Apache 2, ga poženite in vodil vas bo skozi namestitveni proces. Preverite, da ste pravilno vnesli naslov URL strežnika (če strežnik nima imena DNS ali pa ga ne poznate, vnesite kar naslov IP strežnika). Priporočamo, da namestite Apache za vse uporabnike, na vrata 80, kot storitev (service). Opomba: če že imate nameščen IIS ali kakšen drug program, ki posluša port 80, je lahko namestitev neuspešna. Če se to zgodi, pojdite v namestitveno mapo strežnika Apache, običajno c:\Program Files\Apache Group\Apache2\conf in poiščite datoteko httpd.conf. Spremenite jo tako, da vrednost vrat v izrazu Listen 80 zamenjate z vrednostjo katerihkoli prostih vrat, na primer Listen 81. Potem namestitev ponovite - tokrat bi morala biti uspešna.

  3. Sedaj preverite, če spletni strežnik Apache deluje pravilno. Usmerite svoj spletni brskalnik na stran http://localhost/ - pojaviti se mora prednastavljena spletna stran.

Opozorilo

Če se odločite namestiti strežnik Apache kot storitev (service), upoštevajte, da se bo po privzetih nastavitvah pognal s krajevnim sistemskim računom (local system account). Bolj varen način je, da za poganjanje strežnika Apache ustvarite poseben račun.

Zagotovite, da ima račun, pod katerim teče strežnik Apache, v mapi, kjer se nahajajo skladišča, eksplicitno določene vse pravice (desni klik na mapo | lastnosti | varnost). V nasprotnem primeru uporabniki ne bodo mogli objavljati svojih sprememb.

Tudi če Apache teče pod sistemskim računom, morate pravico vseeno določiti (v tem primeru za račun SYSTEM).

Če Apache tega dovoljenja nima, bodo uporabniki dobili opozorilo “Dostop zavrnjen”, ki je v dnevniku napak strežnika Apache predstavljen s številko 500.

Namestitev sistema Subversion

  1. Prenesite zadnjo različico Win32 dvojiških datotek Subversion za Apache. Prepričajte se, da ste prenesli pravilno različico, drugače boste ob ponovnem zagonu dobili čudna sporočila o napakah. Če uporabljate Apache 2.2.x, uporabite povezavo http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100.

  2. Poženite namestitveni program za Subversion in sledite navodilom. Če namestitveni program ugotovi, da imate nameščen strežnik Apache, ste že skoraj pri koncu. Če strežnika ne najde, potem vas čaka še nekaj korakov.

  3. Z Raziskovalcem pojdite v namestitveno mapo Subversion (običajno c:\program files\Subversion) in poiščite datoteki /httpd/mod_dav_svn.so in mod_authz_svn.so. Prekopirajte ti datoteki v podmapo modules namestitvene mape strežnika Apache (običajno c:\program files\apache group\apache2\modules ).

  4. Prekopirajte datoteki /bin/libdb*.dll in /bin/intl3_svn.dll iz namestitvene mape Subversion v podmapo bin strežnika Apache.

  5. Popravite konfiguracijsko datoteko strežnika Apache (ponavadi C:\Program Files\Apache Group\Apache2\conf\httpd.conf) z urejevalnikom besedil (n. pr. z Beležko) in naredite naslednje spremembe:

    Odstranite komentar (oznako '#') izpred naslednjih vrstic:

    #LoadModule dav_fs_module modules/mod_dav_fs.so
    #LoadModule dav_module modules/mod_dav.so
    

    Dodajte naslednji vrstici na konec sekcije LoadModule.

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
    

Konfiguracija

Apache in Subversion sta nameščena, vendar Apache še ne zna delati z odjemalci Subversion, kakršen je TortoiseSVN. Da poveste strežniku Apache, kateri naslovi URL bodo uporabljeni kot skladišča Subversion, morate popraviti njegovo konfiguracijsko datoteko (običajno se nahaja na c:\program files\apache group\apache2\conf\httpd.conf) z urejevalnikom besedila (n. pr. z Beležko):

  1. Na koncu datoteke Config dodajte naslednje vrstice:

    <Location /svn>
      DAV svn
      SVNListParentPath on
      SVNParentPath D:\SVN
      #SVNIndexXSLT "/svnindex.xsl"
      AuthType Basic
      AuthName "Skladišča Subversion"
      AuthUserFile passwd
      #AuthzSVNAccessFile svnaccessfile
      Require valid-user
    </Location>
    

    S tem nastavite strežnik Apache tako, da so vsa skladišča sistema Subversion znotraj mape D:\SVN. Zunanjemu svetu so skladišča na voljo na naslovu http://MojStrežnik/svn/ . Dostop je omejen na uporabniška imena/gesla, ki so navedena v datoteki passwd.

  2. Za ustvarjanje datoteke passwd ponovno odprite ukazno lupino (okno DOS), pojdite v mapo strežnika Apache2 (ponavadi c:\program files\apache group\apache2) in z naslednjim ukazom ustvarite datoteko:

    bin\htpasswd -c passwd <username>
    

    S tem ustvarite datoteko z imenom passwd, ki se uporablja za avtentikacijo. Dodatne uporabnike lahko vnesete z

    bin\htpasswd geslo <uporabniško ime>
    
  3. Ponovno zaženite storitev (service) Apache.

  4. Usmerite spletni brskalnik na http://MojStrežnik/svn/MojeNovoSkladišče (kjer je MojeNovoSkladišče ime skladišča Subversion, ki je ste ga predhodno ustvarili). Če je šlo vse po načrtih, potem vas mora pričakati vnosno polje za uporabnišo ime in geslo. Po vpisu lahko vidite vsebino skladišča.

Kratka obrazložitev pravkar vnesenega:

Tabela 3.1. Nastavitve Apache httpd.conf

NastavitevRazlaga
<Location /svn>pomeni, da so skladišča sistema Subversion na voljo na naslovu URL http://MojStrežnik/svn/
DAV svnpove strežniku Apache, kateri modul bo odgovoren za strežbo naslova URL - v tem primeru modul Subversion.
SVNListParentPath onV različicah sistema Subversion 1.3 ali novejših ta ukaz omogoča izpis seznama vse razpoložljivih skladišč v mapi SVNParentPath.
SVNParentPath D:\SVNpove sistemu Subversion, naj skladišča išče v mapi D:\SVN
SVNIndexXSLT "/svnindex.xsl"Nastavitev za lepši izpis pri brskanju po skladiščih.
AuthType Basicse uporablja za nastavitev osnovne avtentikacije, n. pr. uporabniško ime/geslo
AuthName "Subversion repositories"se uporablja kot informacija ob prikazu pojavnega okna za avtentikacijo. Uporabniku pove, za kaj se avtentikacija uporablja.
AuthUserFile passwddoloči datoteko z gesli, ki naj se uporabi za avtentikacijo
AuthzSVNAccessFilelokacija datoteke dostopov za poti v skladiščih Subversion
Require valid-userdoloči, da lahko do naslova URL dostopajo le uporabniki, ki so navedli pravilno kombinacijo uporabniškega imena in gesla


Vendar je to le primer. Obstaja še zelo veliko stvari, ki jih lahko naredite s spletnim strežnikom Apache.

  • Če želite, da imajo pravico branja v vašem skladišču vsi uporabniki, pravico pisanja pa samo nekateri, spremenite vrstico

    Require valid-user
    

    v

    <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
    </LimitExcept>
    
  • Z uporabno datoteke passwd lahko omejite oziroma dovolite dostop do vseh skladišč naenkrat. Če želite imeti več nadzora nad tem, kateri uporabnik ima pravice v določeni mapi skladišča, odkomentirajte vrstico

    #AuthzSVNAccessFile svnaccessfile
    

    in ustvarite datoteko dostopa. Apache poskrbi, da lahko samo veljavni uporabniki dostopajo do lokacije /svn, in potem posreduje uporabniško ime modulu AuthzSVNAccessFile, tako da lahko le-ta bolj podrobno ugotovi pravice glede na pravila, ki so zapisana v datoteki dostopa. Poti so zapisane v obliki skladišče:pot ali preprosto pot. Če ne določite skladišča, pravilo velja za vsa skladišča v mapi SVNParentPath. Oblika avtorizacijske datoteke, ki jo uporablja mod_authz_svn, je opisana v “Avtorizacija na osnovi poti”

  • Da bi polepšali izpis pri brskanju po skladišču, odkomentirajte naslednjo vrstico

    #SVNIndexXSLT "/svnindex.xsl"
    

    in dodajte datoteke svnindex.xsl, svnindex.css in menucheckout.ico v korensko mapo dokumentov na strežniku (ponavadi C:/Program Files/Apache Group/Apache2/htdocs). Mapa se nastavi z ukazom DocumentRoot v konfiguracijski datoteki strežnika Apache.

    You can get those three files directly from our source repository at http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/other/svnindex. (“TortoiseSVN je brezplačen!” explains how to access the TortoiseSVN source repository).

    Datoteka XSL skladišča TortoiseSVN ima koristen dodatek: če uporabljate za brskanje po skladišču spletni brskalnik, se ob vsaki mapi v skladišču izriše ikona na desni strani imena. Če kliknete nanjo, se prikaže pogovorno okno za prevzem za ta naslov URL.

Več skladišč

Če ste pri nameščanju nastavili ukaz SVNParentPath, potem vam ni treba spreminjati konfiguracijske datoteke Apache vsakič, ko dodate novo skladišče. Enostavno ustvarite novo skladišče na isti lokaciji, na kateri ste ustvarili prvo skladišče! V našem podjetju imamo neposreden dostop do te lokacije na strežniku preko SMB (običajen datotečni dostop sistema Windows). Tako enostavno na tej lokaciji ustvarimo novo mapo, uporabimo ukaz TortoiseSVNTukaj ustvari skladišče... in nov projekt ima svoj dom...

Če uporabljate Subversion 1.3 ali novejšo različico, lahko uporabite ukaz SVNListParentPath on. S tem dovolite strežniku Apache, da prikaže seznam vseh projektov, če v brskalnik vpišete korensko pot namesto določenega skladišča.

Avtorizacija na osnovi poti

Modul mod_authz_svn omogoča podrobno nastavitev pravic dostopa na osnovi uporabniških imen in poti skladišč. Možnost je na voljo pri uporabi strežnika Apache, od različice Subversion 1.3 naprej pa tudi pri uporabi svnserve.

Primer datoteke izgleda takole:

[groups]
skrbniki = john, kate
razvijalci1 = john, rachel, sally
razvijalci2 = kate, peter, mark
dokumentaristi = bob, jane, mike
tecajniki = zak
# Privzeto pravilo za dostope za VSA skladišča
# Vsi lahko berejo, skrbniki imajo pravice za pisanje,# Dan German nima nobenih pravic.
[/]
* = r
@skrbniki = rw
dangerman =
# Dovoli razvijalcem popoln dostop do projektnih skladišč
[proj1:/]
@razvijalci1 = rw
[proj2:/]
@razvijalci2 = rw
[bigproj:/]
@razvijalci1 = rw
@razvijalci2 = rw
trevor = rw
# Dodeli dokumentaristom pravice pisanja v vseh doc mapah
[/trunk/doc]
@dokumentaristi = rw
# Dodeli tečajnikom pravice pisanja le v skladišču TrainingRepos
[TrainingRepos:/]
@tecajniki = rw

Upoštevajte, da je preverjanje vsake poti lahko zelo potratna operacija, predvsem v primeru dnevnika. Strežnik preverja vsako spremenjeno pot v vsaki reviziji in preveri berljivost, kar je lahko zelo zamudno pri revizijah, kjer je spremenjeno veliko število datotek.

Avtentikacija in avtorizacija sta dva ločena procesa. Če želi uporabnik dobiti dostop do poti v skladišču, mora zadostiti obema pogojema: običajni zahtevi po avtentikaciji in avtorizacijski zahtevi za dostop do datoteke.

Avtentikacija z domeno Windows

Kot se verjetno opazili, morate narediti vnos uporabniškega imena in gesla v datoteko passwd za vsakega uporabnika posebej. In če želite, da vaši uporabniki (iz varnostnih razlogov) periodično spreminjajo geslo, morate te spremembe vnašati ročno.

Vendar obstaja rešitev problema - v primeru, če dostopate do skladišča iz krajevnega omrežja z domenskim kontrolerjem sistema Windows: mod_auth_sspi!

Originalni modul SSPI, vključno z izvorno kodo, je včasih ponujajo podjetje Syneapps. Vendar je razvoj že nekaj časa ustavljen. A ne obupajte, skupnost nadaljuje s projektom in ga izboljšuje. Nova lokacija projekta je SourceForge.

  • Prenesite modul, ki ustreza različi vašega strežnika Apache, prekopirajte datoteko mod_auth_sspi.so v podmapo modules namestitvene mape strežnika Apache.

  • Popravite konfiguracijsko datoteko strežnika Apache: dodajte vrstico

    LoadModule sspi_auth_module modules/mod_auth_sspi.so
    

    v sekcijo LoadModule. To vrstico morate vstaviti pred vrstico

    LoadModule auth_module modules/mod_auth.so
    
  • Če želite, da Subversion uporablja ta tip avtentikacije, morate spremeniti vrstico

    AuthType Basic
    

    v

    AuthType SSPI
    

    in dodati

    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain <domaincontroller>
    SSPIOmitDomain on
    SSPIUsernameCase lower
    SSPIPerRequestAuth on
    SSPIOfferBasic On
    

    v blok <Location /svn>. Če nimate domenskega kontrolerja, pustite ime domenske kontrole na <domaincontroller>.

Če za avtentikacijo uporabljate SSPI, potem ne potrebujete več vrstice AuthUserFile za datoteko gesel. Apache avtenticira vaše uporabniško ime in geslo v domeni Windows. Morali pa boste posodobiti seznam uporabnikov v datoteki svnaccessfile, da bo le-ta vsebovala tudi uporabnike oblike DOMENA\uporabniško ime.

Pomembno

Avtentikacija SSPI je na voljo le va varne (SSL) povezave (https). Če za dostop do strežnika uporabljate navadno (http) povezavo, stvar ne bo delovala.

Za vklop varne povezave (SSL) na strežniku preberite “Zavarovanje strežnika z SSL”

Namig

Datoteke AuthzSVNAccessFile sistema Subversion so občutljive na velike in male črke pri navajanju uporabniških imen (beseda UPorabnik je torej drugačna kot uporabnik).

V Microsoftovem svetu domene Windows in uporabniška imena ne ločijo velikih in malih črk. Kljub vsemu nekateri skrbniki sistema radi uporabljajo kamelji stil za uporabniške račune (n.pr. JUporabnik).

Ta razlika pa vam lahko ponagaja pri uporabi avtentikacije SSPI. Sistem Subversion dobi domeno Windows in uporabniško ime v natančno takšni obliki, kot ju je uporabnik vpisal. Internet Explorer pogosto pošlje uporabniško ime strežniku Apache v obliki, ki je bila uporabljena pri ustvarjanju računa.

Rezultat tega je, da boste mogoče potrebovali vsaj dva vnosa v AuthzSVNAccessFile za vsakega uporabnika -- vnos z malimi črkami in vnos v enakem formatu, kot ga Internet Explorer pošlje strežniku Apache. Prav tako boste morali naučiti uporabnike, da vnašajo avtentikacijske podatke z malimi črkami, ko dostopajo do skladišč preko programa TortoiseSVN.

Zapis dostopov in napak strežnika Apache sta vaša najboljša prijatelja, ko je potrebno reševati takšne težave. Pomagata vam ugotoviti natančen niz, ki ga dobi modul AuthzSVNAccessFile. Mogoče boste morali poskušati ugotoviti pravilno obliko niza v datoteki svnaccessfile (n. pr. DOMENA\uporabnik oz. DOMEMA//uporabnik), preden bo sistem res deloval.

Avtentikacija iz več virov

Določiti je mogoče več virov za avtentikacijo skladišč Subversion. Da bi to delovalo, morate vsako avtentikacijo narediti neavtoritativno. S tem bo Apache pri več virih preveril, ali je sta uporabniško ime in geslo pravilna.

Pogosta je situacija, ko imamo avtentikacijo tako preko domene Windows kot preko datoteke passwd. Na ta način lahko omogočite dostop tudi uporabnikom, ki nimajo uporabniškega imena in gesla za domeno Windows.

  • Da bi omogočili avtentikacijo preko domene Windows in datoteke passwd, dodajte naslednji vrstici znotraj bloka <Location> v konfiguracijski datoteki strežnika Apache:

    AuthBasicAuthoritative Off
    SSPIAuthoritative Off
    

Sledi celoten primer konfiguracije strežnika Apache za kombinacijo avtentikacije preko domene Windows in dateteke passwd:

<Location /svn>
  DAV svn
  SVNListParentPath on
  SVNParentPath D:\SVN

  AuthName "Skladišča Subversion"
  AuthzSVNAccessFile svnaccessfile.txt

# Logiranje preko domen NT.
  AuthType SSPI
  SSPIAuth On
  SSPIAuthoritative Off
  SSPIDomain <domaincontroller>
  SSPIOfferBasic On

# Logiranje preko datoteke passwd.
  AuthType Basic
  AuthBasicAuthoritative Off
  AuthUserFile passwd

  Require valid-user
</Location>

Zavarovanje strežnika z SSL

Čeprav ima Apache 2.2.x podporo za OpenSSL, le-ta ob privzetih nastavitvah ni vključena. Vključiti jo morate ročno.

  1. V konfiguracijski datoteki strežnika Apache odstranite komentar izpred naslednjih vrstic:

    #LoadModule ssl_module modules/mod_ssl.so
    

    in na koncu

    #Include conf/extra/httpd-ssl.conf
    

    nato spremenite vrstico (v eni vrstici)

    SSLMutex "file:C:/Program Files/Apache Software Foundation/\
    Apache2.2/logs/ssl_mutex"
    

    v

    SSLMutex default
    
  2. Nato morate ustvariti certifikat SSL. Odprite ukazni poziv (okno DOS) in pojdite v namestitveno mapo strežnika Apache (n. pr. C:\program files\apache group\apache2) in vpišite naslednji ukaz:

    bin\openssl req -config conf\openssl.cnf -new -out my-server.csr
    

    Vpisati boste morali šifrirno frazo. Ne uporabljajte enostavnih besed, ampak vpišite cel stavek, naprimer del pesmi. Daljša je fraza, boljša je. Vnesti morate še naslov URL vašega strežnika. Na ostala vprašanja vam ni nujno odgovoriti, vendar vam priporočamo, da vseeno odgovorite.

    Običajno se datoteka privkey.pem ustvari samodejno, če pa se ne, morate vtipkati naslednji ukaz, da jo ustvarite:

    bin\openssl genrsa -out conf\privkey.pem 2048
    

    Nato vpišite naslednje ukaze

    bin\openssl rsa -in conf\privkey.pem -out conf\server.key
    

    in (v eni vrstici)

    bin\openssl req -new -key conf\server.key -out conf\server.csr \
    -config conf\openssl.cnf
    

    in nato (v eni vrstici)

    bin\openssl x509 -in conf\server.csr -out conf\server.crt
                     -req -signkey conf\server.key -days 4000
    

    S tem ustvarite certifikat, ki bo potekel čez 4000 dni. Nato vpišite (v eni vrstici) še:

    bin\openssl x509 -in conf\server.cert -out conf\server.der.crt
                     -outform DER
    

    Ti ukazi ustvarijo nekaj datotek v konfiguracijski mapi (conf) strežnika Apache (server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert).

  3. Ponovno zaženite storitev Apache.

  4. Usmerite vaš spletni brskalnik na https://servername/svn/project ...

SSL in Internet Explorer

Če dostop do strežnika zavarujete s protokolom SSL in uporabite avtentikacijo z domeno Windows, boste ugotovili, da brskanje po skladiščih z Internet Explorerjem ne deluje več. Ne skrbite - samo Internet Explorer ni sposoben izvesti avtentikacije. Ostali brskalniki tega problema nimajo, TortoiseSVN in ostali odjemalci za Subversion še vedno lahko izvajajo avtentikacijo.

Če še vedno želite uporabljati Internet Explorer za brskanje po skladišču, lahko:

  • v konfiguracijski datoteki Apache definirate ločen ukaz <Location /path> in dodate vrstico SSPIBasicPreferred On. To omogoči avtentikacijo preko Internet Explorerja, vendar pa ostali brskalniki in odjemalci za Subversion ne bodo mogli izvajati avtentikacije na tej lokaciji.

  • Ponudite tudi brskanje preko neenkriptirane avtentikacije (brez SSL). Začuda IE nima nobenih težav z avtentikacijo, če povezava ni zaščitena z SSL.

  • Pri "standardni" namestitvi SSL se v Apachejevem virtualnem gostitelju pogosto nahaja naslednji stavek:

    SetEnvIf User-Agent ".*MSIE.*" \
                 nokeepalive ssl-unclean-shutdown \
                 downgrade-1.0 force-response-1.0
    

    Obstajajo (so obstajali?) dobri razlogi za takšno konfiguracijo, poglejte na http://www.modssl.org/docs/2.8/ssl_faq.html#ToC49 Toda če želite uporabiti avtentikacijo NTLM, morate uporabiti opcijo keepalive. Če odkomentirate celoten blok SetEnvIf, boste lahko uporabljali avtentikacijo IE z avtentikacijo sistema Windows preko protokola SSL in strežnika Apache na sistemu WIN32 z vključenim modulom mod_auth_sspi.

Vsiljevanje dostopa SSL

Če ste nastavili protokol SSL, da bi bili dostopi do skladišč bolj varni, onemogočite navaden - ne-SSL (http) dostop in dovolite le dostop https. To naredite tako, da dodate nov ukaz v Subversion blok <Location>: SSLRequireSSL.

Primer bloka <Location> izgleda takole:

<Location /svn>
  DAV svn
  SVNParentPath D:\SVN
  SSLRequireSSL
  AuthType Basic
  AuthName "Skladišča Subversion"
  AuthUserFile passwd
  #AuthzSVNAccessFile svnaccessfile
  Require valid-user
</Location>

Uporaba certifikatov odjemalca z navideznimi gostitelji SSL

Prispevek je na dopisni seznam poslal Nigel Green. Hvala!

V določenih primerih morate na enem strežniku ustvariti dva navidezna gostitelja SSL: prvega za javni dostop dostop preko interneta brez zahteve po certifikatu, drugega za varen dostop s certifikatom, ki poganja strežnik Subversion.

Če odseku per-server v konfiguraciji strežnika Apache (n. pr. izven blokov VirtualHost in Directory) dodate ukaz SSLVerifyClient Optional, strežnik prisilite, da ob prvem kontaktu v načinu SSL zahteva certifikat. Zaradi napake v modulu mod_ssl je pomembno certifikat zatevati na tem mestu, kajti stvar ob ponovnem vzpostavaljnju poveze SSL ne deluje.

Zagato rešimo tako, da dodano naslednji ukaz navideznemu gostitelju, ki ga želimo uporabljati za Subversion:

SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"

S tem dostop do mape dovolimo le uporabnjikom, ki so uporabili veljaven certifikat.

Za zakljkuček poglejmo pomembne dele konfiguracijske datoteke strežnika Apache:

SSLVerifyClient Optional

### Navidezni gostitelj za JAVEN dostop
### (ne zahteva certifikata)

<VirtualHost 127.0.0.1:443>
  <Directory "potdokorenskemapezajavnidstop">
  </Directory>
</VirtualHost>

### Navidezni gostitelj za SUBVERSION
### (zahteva certifikat)
<VirtualHost 127.0.0.1:443>
  <Directory "korenska mapa za subversion">
    SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"
  </Directory>

  <Location /svn>
    DAV svn
    SVNParentPath /potdoskladišča
  </Location>
</VirtualHost>