Apache-pohjainen palvelin

Johdanto

Apache-pohjainen Subversion-palvelinasennus tarjoaa eniten mahdollisuuksia muunteluun. Vaikkakin onkin hieman monimutkaisempi asentaa, se tarjoaa etuja, joita muilla palvelimilla ei ole:

WebDAV

Apache-pohjainen Subversion-palvelin käyttää WebDAV-yhteyskäytäntöä, jota myös monet muut ohjelmat tukevat. Voit esimerkiksi asentaa tällaisen arkiston ”Web-kansioksi” Windows-resurssienhallintaan ja sitten käyttää sitä kuten mitä tahansa muuta tiedostojärjestelmän kansiota.

Arkiston selaaminen

Voit avata arkistosi paikantimen selaimellasi ja selata sen sisältöä asentamatta Subversion-asiakasta. Tällä tavalla tietosi ovat paljon laajemman käyttäjäkunnan saavutettavissa.

Tunnistaminen

Voit käyttää mitä tahansa Apachen tukemaa tunnistustapaa, mukaan lukien SSPI ja LDAP.

Turvallisuus

Koska Apache on hyvin vakaa ja turvallinen, saat automaattisesti saman turvan arkistollesi. Tähän sisältyy myös SSL-salaus.

Apachen asentaminen

Apachen asentamiseksi tarvitset aluksi tietokoneen, jonka käyttöjärjestelmä on joko Windows2000, Windows XP+SP1, Windows2003, Vista tai Server 2008.

Varoitus

Huomaa, että Windows XP-asennus vaatii vähintään päivitysversion 1 (Service Pack 1) asennuksen - muuten verkkoliikenne sotkee tietoja ja voi johtaa arkiston vioittumiseen!

  1. Lataa viimeisin versio Apache-palvelimesta osoitteesta http://httpd.apache.org/download.cgi. Varmista, että lataat version 2.2.x - versio 1.3.xx ei toimi!

    Apachen MSI-asennusohjelma löytyy napsauttamalla kohtaa other files ja etsimällä kohta binaries/win32. Saatat haluta MSI-version, jossa on mukana OpenSSL-tuki (apache-2.2.x-win32-x86-openssl-0.9.x.msi ).

  2. Kun sinulla on Apache2-asennusohjelma, voit kaksoisnapsauttaa sitä, ja se ohjaa sinut asennusprosessin läpi. Varmista, että syötät palvelimen paikantimen oikein (jos palvelimellasi ei ole DNS-nimeä, voit antaa myös pelkän IP-osoitteen) Suosittelemme asentamaan Apachen kaikille käyttäjille, porttiin 80, palveluna. Huomaa: Jos IIS tai mikä tahansa muu ohjelma, joka kuuntelee porttia 80, on käynnissä, asennus saattaa epäonnistua. Jos näin käy, siirry hakemistoon \Apache Group\Apache2\conf ja etsi tiedosto httpd.conf. Muokkaa tiedostoa siten, että Listen 80 vaihdetaan vapaaseen porttiin, esim. Listen 81. Käynnistä sitten asennus uudestaan - tällä kertaa sen pitäisi toimia ongelmitta.

  3. Testaa nyt, että Apache-palvelin toimii oikein avaamalla osoite http://localhost/ selaimessa - ennalta asennetun web-sivun pitäisi tulla näkyviin.

Varo

Jos päätät asentaa Apachen palveluna, huomioi, että se suoritetaan oletusarvoisesti paikallisella järjestelmätunnuksella (system). Olisi turvallisempaa luoda erillinen tunnus Apachen ajoa varten.

Varmista, että Apachen suorittamiseen käytetyllä tunnuksella on erillinen säätö arkistohakemiston saantioikeuslistassa (napsauta hiiren oikealla napilla hakemisto | ominaisuudet | turvallisuus) kaikilla oikeuksilla. Muuten käyttäjät eivät kykene toimittamaan muutoksiaan arkistoon.

Vaikka Apachea ajetaan paikallisessa järjestelmässä, tarvitset silti tällaisen tunnuksen (tässä tapauksessa SYSTEM-tunnus).

Mikäli tätä oikeutta ei ole määritelty Apacheen, käyttäjäsi saavat ”Access denied” (käyttö estetty) -virheilmoituksia, jotka näkyvät Apachen virhelokissa virheenä 500.

Subversionin asentaminen

  1. Lataa viimeisin versio Subversion Win32-paketista Apachelle. Varmista, että valitset Apache-versiotasi vastaavan version, muuten törmäät hämäriin virheilmoituksiin käynnistäessäsi koneesi uudelleen. Jos käytät Apache-versiota 2.2.x, siirry osoitteeseen http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100.

  2. Aja Subversion-asennusohjelma ja seuraa ohjeita. Mikäli asennusohjelma havaitsee, että olet jo asentanut Apachen, olet miltei valmis. Muussa tapauksessa sinun pitää suorittaa muutama ylimääräinen toimenpide.

  3. Avaa Windows Resurssienhallinta ja siirry Subversion-asennushakemistoon (tavallisesti c:\program files\Subversion) ja etsi tiedostot /httpd/mod_dav_svn.so ja mod_authz_svn.so. Kopioi nämä tiedostot Apachen modulihakemistoon (tavallisesti c:\program files\apache group\apache2\modules).

  4. Kopioi tiedostot /bin/libdb*.dll ja /bin/intl3_svn.dll Subversion -asennushakemistosta Apachen bin-hakemistoon.

  5. Muokkaa Apachen määrittelytiedostoa (tavallisesti C:\Program Files\Apache Group\Apache2\conf\httpd.conf) tekstieditorilla (esim. Notepad) ja tee seuraavat muutokset:

    Poista kommentit (poista '#' -merkki) seuraavilta riveiltä:

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

    Lisää seuraavat rivit LoadModule -osan loppuun.

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

Määrittely

Nyt olet asentanut Apachen ja Subversionin, mutta Apache ei osaa vielä palvella Subversion-asiakkaita (esim. TortoiseSVN). Kertoaksesi Apachelle, mitä paikanninta Subversion-arkistot käyttävät sinun on muokatattava Apachen määrittelytiedostoa (tavallisesti paikassa c:\program files\apache group\apache2\conf\httpd.conf) tekstieditorilla (esim. Notepad):

  1. Lisää määrittelytiedoston loppuun seuraavat rivit:

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

    Tämä määrittää Apachen niin, että kaikki Subversion-arkistosi ovat fyysisesti hakemiston D:\SVN sisällä. Arkistot välitetään ulkomaailmalle paikantimella http://MyServer/svn/ . Kytkeytyminen on rajoitettu tunnettuihin käyttäjiin, jotka on lueteltu tiedostossa passwd.

  2. Luodaksesi tiedoston passwd, avaa komentokehote (DOS-komentoikkuna) uudelleen, siirry apache2 -hakemistoon (tavallisesti c:\program files\apache group\apache2) ja luo tiedosto antamalla komento

    bin\htpasswd -c passwd <nimi>
    

    Tämä luo tiedoston "passwd", jota käytetään tunnistamiseen. Uusia käyttäjiä voi lisätä komennolla

    bin\htpasswd passwd <nimi>
    
  3. Käynnistä Apache-palvelu uudestaan.

  4. Avaa selainikkuna osoitteessa http://MyServer/svn/MyNewRepository (missä MyNewRepository on aiemmin luomasi Subversion-arkiston nimi). Jos kaikki meni hyvin, sinulta pyydetään käyttäjätunnusta ja salasanaa, minkä jälkeen arkiston sisältö ilmestyy näkyviin.

Lyhyt selvitys juuri syöttämillesi tiedoille:

Taulu 3.1. Apache httpd.conf-asetukset

AsetusSelitys
<Location /svn>tarkoittaa, että Subversion-arkistot ovat saatavilla paikantimella http://MyServer/svn/
DAV svnkertoo Apachelle, mikä moduli on vastuussa paikantimen palvelemisesta - tässä tapauksessa Subversion-moduli.
SVNListParentPath onsallii kaikkien SVNParentPath takana olevien arkistojen luettelemisen. Käytettävissä Subversion-versiosta 1.3 eteenpäin.
SVNParentPath D:\SVNkertoo Subversionille, että arkistot ovat polun D:\SVN alapuolella
SVNIndexXSLT "/svnindex.xsl"muuttaa arkiston esitystapaa, kun selailu tehdään web-selaimella.
AuthType Basicaktivoi perustunnistuksen, ts. käyttäjätunnus/salasana
AuthName "Subversion repositories"käytetään tunnistusikkunassa kertomaan käyttäjälle, mihin tunnistusta tarvitaan
AuthUserFile passwdmäärittää, mitä salasanatiedostoa tunnistukseen käytetään
AuthzSVNAccessFileSubversion-arkiston valtuutustiedoston sijainti (määrittää arkiston polkujen saantioikeudet)
Require valid-usermäärittää, että vain oikean käyttäjätunnus/salasana -parin antanut käyttäjä voi käyttää paikanninta


Tämä on kuitenkin vain esimerkki. On paljon muitakin mahdollisuuksia sille, mitä voit tehdä Apache-palvelimella.

  • Jos haluat, että arkistosi sallii lukuoikeudet kaikille, mutta kirjoitusoikeudet vain tietyille käyttäjille, voit vaihtaa rivin

    Require valid-user
    

    muotoon

    <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
    </LimitExcept>
    
  • passwd-tiedoston käyttö rajoittaa ja sallii yhdellä kertaa pääsyn kaikkiin arkistoihisi. Jos haluat määrittää tarkemmin, kellä käyttäjillä on pääsy mihinkin kansioon arkiston sisällä, voit poistaa kommentin riviltä

    #AuthzSVNAccessFile svnaccessfile
    

    ja luoda Subversion -valtuutustiedoston. Apache varmistaa, että vain oikeat käyttäjät pääsevät kytkeytymään /svn-osoitteeseen, ja välittää tämän jälkeen käyttäjätunnuksen Subversionin AuthzSVNAccessFile-modulille, joka tekee hienosyisemmän tarkistuksen Subversionin valtuutustiedostossa olevien sääntöjen perusteella. Huomaa, että polut annetaan joko muodossa arkisto:polku tai yksinkertaisesti polku. Jos jätät arkiston antamatta jollekin säännölle, sääntö pätee kaikille arkistoille SVNParentPath-polun alla. mod_authz_svn-modulin valtuutustiedoston rakenne on kuvattu luvussa ”Polkuperustainen valtuutus”.

  • Tehdäksesi arkiston selailun web-selaimella 'tyylikkäämmäksi', poista kommentti riviltä

    #SVNIndexXSLT "/svnindex.xsl"
    

    ja sijoita tiedostot svnindex.xsl, svnindex.css ja menucheckout.ico dokumenttien juurikansioon (tavallisesti C:/Program Files/Apache Group/Apache2/htdocs). Juurikansio asetetaan komennolla DocumentRoot Apache-määrittelytiedostossasi.

    Voit hakea nuo kolme tiedostoa TortoiseSVN-arkistosta osoitteesta http://tortoisesvn.googlecode.com/svn/trunk/contrib/svnindex.(Kappale ”TortoiseSVN on ilmainen!” kertoo, miten TortoiseSVN-arkistoon kytkeydytään).

    TortoiseSVN-arkistosta löytyvästä xsl-tiedostosta on mukava lisäpiirre: kun selaat arkistoa selaimellasi, jokaisen kansion oikealla puolella on kuvake. Napsauttamalla kuvaketta voit käynnistää TortoiseSVN-komennon "Hae työkopio" tästä osoitteesta.

Useita arkistoja

Jos käytät SVNParentPath-komentoa, sinun ei tarvitse muuttaa Apachen määrittelytiedostoa aina, kun lisään uuden Subversion-arkiston. Riittää, että yksinkertaisesti luot uuden arkiston samaan paikkaan kuin ensimmäinen arkisto, ja olet valmis! Jos sinulla on suora pääsy tuohon palvelinkansioon, niin uuden arkiston luomiseksi riittää, kun luot työasemaltasi palvelinkansioon uuden alihakemiston ja annat TortoiseSVN-komennon TortoiseSVNLuo arkisto tähän....

Mikäli käytät Subversion-ohjelman versiota 1.3 tai uudempaa, voit komennolla SVNListParentPath on saada Apachen tuottamaan luettelon kaikista käytettävissä olevista arkistoista, kun avaat web-selaimella arkiston sijaan sen yläkansion.

Polkuperustainen valtuutus

Modulin mod_authz_svn avulla arkiston saantioikeudet voidaan määritellä tarkemmin käyttäjätunnusten ja arkistopolkujen perusteella. Moduli on käytettävissä Apache-pohjaisen palvelimen kanssa, ja alkaen Subversion-versiosta 1.3 myös svnserve-palvelimen kanssa.

Esimerkkitiedosto voisi näyttää seuraavalta:

[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Oletussaantioikeus KAIKILLE arkistoille
# Kaikki voivat lukea, ylläpitäjät kirjoittaa, Dan German on estetty.
[/]
* = r
@admin = rw
dangerman =
# Salli kehittäjille täydet oikeudet projektikohtaisiin arkistoihin
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Anna dokumentoijille kirjoitusoikeudet dokumenttikansioihin
[/trunk/doc]
@docs = rw
# Anna harjoittelijoille kirjoitusoikeudet vain harjoitteluarkistoon
[TrainingRepos:/]
@training = rw

Huomaa, että jokaisen polun tarkistaminen voi viedä runsaasti aikaa, etenkin versiolokia haettaessa. Palvelin tarkistaa jokaiselle haetulle versiolle lukuoikeuden jokaiseen se muuttuneeseen polkuun; tämä voi kestää kauan versioilla, joissa usea tiedosto on muuttunut.

Tunnistaminen (authentication) ja valtuuttaminen (authorization) ovat erillisiä toimintoja. Jos käyttäjä haluaa lukea tietyn arkiston polun, hänen täytyy täyttää molemmat, normaalit tunnistusvaatimukset sekä valtuutustiedoston määrittämät polkuoikeudet.

Tunnistus Windows-toimialueella

Kuten olet ehlä huomannut, sinun täytyy tehdä käyttäjätunnus/salasana-yhdistelmä passwd-tiedostoon jokaiselle käyttäjälle erikseen. Ja jos haluat (tietoturvasyistä) käyttäjien vaihtavan säännöllisesti salasanojaan, sinun pitää tehdä muutokset käsin.

Tähän ongelmaan on kuitenkin ratkaisu - ainakin jos kytkeydyt arkistoon lähiverkossa, joka kuuluu Windows-toimialueeseen: mod_auth_sspi!

Alkuperäisen SSPI-modulin julkaisi lähdekoodien kanssa Syneapps. Modulin kehittäminen heidän toimestaan on kuitenkin sittemmin lakannut. Avoimen lähdekoodin yhteisö on kuitenkin alkanut jälleen ylläpidon. Projektilla on uusi koti osoitteessa http://sourceforge.net/projects/mod-auth-sspi/.

  • Lataa Apache-versiotasi vastaava moduli ja kopioi tiedosto mod_auth_sspi.so Apachen modulihakemistoon.

  • Muokkaa Apachen määrittelytiedostoa: lisää rivi

    LoadModule sspi_auth_module modules/mod_auth_sspi.so
    

    LoadModule-osaan. Varmista, että lisäät rivin ennen riviä

    LoadModule auth_module modules/mod_auth.so
    
  • Saadaksesi Subversionin käyttämään uutta tunnistustapaa muuta rivi

    AuthType Basic
    

    muotoon

    AuthType SSPI
    

    Lisää myös rivit

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

    <Location /svn>-lohkoon. Jos ympäristössäsi ei ole toimialuekontrolleria, jätä kontrollerin nimi muotoon <toimialuekontrolleri>.

Huomaa, että jos käytät SSPI-tunnistusta, et tarvitse AuthUserFile -riviä salasanatiedoston määrittämiseen. Sen sijaan Apache tunnistaa antamasi käyttäjätunnuksen ja salasanan Windows-toimialuetta vastaan. Sinun pitää myös päivittää käyttäjälista valtuutustiedostossa svnaccessfile sisältämään toimialueviittauksen TOIMIALUE\käyttäjätunnus.

Tärkeää

SSPI-tunnistus on kytketty vain SSL-pohjaisille yhteyksille (https). Jos käytät normaalia http-yhteyttä palvelimellesi, se ei toimi.

Katso ohjeet luvusta ”Palvelimen turvaaminen SSL-tekniikalla” kytkeäksesi SSL-yhteyden toimintaan palvelimellasi.

Vihje

Subversionin AuthzSVNAccessFile-tiedostot tulkitsevat isot ja pienet kirjaimet eri merkeiksi käyttäjätunnuksissa (JUser on eri kuin juser).

Microsoft-maailmassa Windows-toimialueet ja käyttäjätunnukset eivät erottele isoja ja pieniä kirjaimia. Niinpä jotkut ylläpitäjät luovat mielellään käyttäjätunnukset KameliMuodossa (esim. JUser).

Tämä eroavuus voi haitata sinua SSPI-tunnistusta käytettäessä, koska Windows-toimialuenimi ja käyttäjätunnus välitetään Subversionille suoraan käyttäjän kirjoittamassa muodossa. Internet Explorer välittää usein käyttäjätunnuksen Apachelle automaattisesti käyttäen tunnusta luotaessa käytettyä muotoa.

Lopputulos on, että tarvitset ainakin kaksi alkiota AuthzSVNAccessFile-tiedostoon kutakin käyttäjää varten -- yhden pienillä kirjaimilla kirjoitetun ja toisen, joka on Internet Explorerin Apachelle välittämässä muodossa. Sinun pitää myös kertoa käyttäjille, että käyttäjätunnus tulee syöttää pieniä kirjaimia käyttäen, kun kytkeydytään arkistoihin TortoiseSVN-ohjelmalla.

Apachen virhe- ja saantilokit ovat parhaat ystäväsi, kun selvität tällaisia ongelmia - ne auttavat sinua päättelemään Subversionin AuthzSVNAccessFile-modulille välitetyn käyttäjätunnuksen muodon. Voit joutua kokeilemaan erilaisia käyttäjätunnuksen muotoja svnaccessfile-tiedostossa (esim.TOIMIALUE\käyttäjä vs. TOIMIALUE//käyttäjä) saadaksesi kaiken toimimaan.

Useita tunnistustapoja

On myös mahdollista määrittää useampi kuin yksi tunnistustapa Subversion-arkistollesi. Tätä varten sinun pitää tehdä jokaisesta tunnistustyypistä ei-määräävä, jotta Apache saadaan tarkistamaan ne kaikki täsmäävän käyttäjätunnus/salasana-parin löytämiseksi.

On tavallista käyttää sekä Windows-toimialuetunnistusta sekä passwd-tiedostoa, jotta voit sallia SVN-käytön myös käyttäjille, joilla ei ole käyttäjätunnusta Windows-toimialueelle.

  • Salliaksesi sekä Windows-toimialue että passwd-tiedostotunnistuksen, lisää seuraavat rivit <Location> -lohkoon Apachen määrittelytiedostossa:

    AuthBasicAuthoritative Off
    SSPIAuthoritative Off
    

Seuraavassa on esimerkki täydellisestä Apache-määrittelystä yhdistetylle Windows-toimialue ja passwd-tiedostoon perustuvalle tunnistukselle:

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

  AuthName "Subversion repositories"
  AuthzSVNAccessFile svnaccessfile.txt

# NT Domain Logins.
  AuthType SSPI
  SSPIAuth On
  SSPIAuthoritative Off
  SSPIDomain <domaincontroller>
  SSPIOfferBasic On

# Htpasswd Logins.
  AuthType Basic
  AuthBasicAuthoritative Off
  AuthUserFile passwd

  Require valid-user
</Location>

Palvelimen turvaaminen SSL-tekniikalla

Vaikka Apache 2.2.x sisältää OpenSSL-tuen, se ei ole oletusarvoisesti aktivoitu. Joudut asettamaan sen päälle erikseen.

  1. Poista Apachen määrittelytiedostosta kommenttimerkki riviltä

    #LoadModule ssl_module modules/mod_ssl.so
    

    ja lopussa riviltä

    #Include conf/extra/httpd-ssl.conf
    

    Muuta sen jälkeen rivi (yhdellä rivillä)

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

    muotoon

    SSLMutex default
    
  2. Seuraavaksi sinun pitää luoda SSL-varmenne. Avaa komentorivikehote (DOS-ikkuna) ja vaihda Apache-kansioon (esim. C:\program files\apache group\apache2) ja anna seuraava komento:

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

    Sinua pyydetään antamaan salauslause. Älä käytä pelkkiä sanoja, vaan kokonaisia lauseita, esim. osia runosta. Mitä pidempi salauslause, sen parempi. Sinulta kysytään myös palvelimesi paikannin. Muut kysymykset ovat vapaaehtoisia, mutta suosittelemme sinua vastaamaan myös niiihin.

    Tavallisesti tiedosto privkey.pem luodaan automaattisesti, mutta jos näin ei käy, anna komento

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

    sen luomiseksi.

    Anna seuraavaksi komennot

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

    ja (yhdellä rivillä)

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

    ja sitten (yhdellä rivillä)

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

    Tämä luo varmenteen, joka vanhenee 4000 päivän kuluttua. Anna lopuksi (yhdellä rivillä) komento

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

    Nämä komennot luovat muutamia tiedostoja Apachen conf-hakemistoon (server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert).

  3. Käynnistä Apache-palvelu uudestaan.

  4. Avaa osoite https://servername/svn/project selaimessasi...

SSL ja Internet Explorer

Jos salaat palvelinliikenteen SSL-käytännöllä ja käytät Windows-toimialuetunnistusta, huomaat, ettei arkiston selaus Internet Explorer -selaimella toimi enää. Tämä johtuu Internet Explorerin kyvyttömyydestä tunnistaa käyttäjä tässä yhteydessä. Muilla selaimilla ei ole tätä ongelmaa, ja TortoiseSVN (kuten muutkin Subversion-asiakkaat) kykenee tunnistamaan käyttäjän.

Jos haluat yhä käyttää IE:tä arkiston selaamiseen, voit joko:

  • määritä erillinen <Location /path> -osa Apachen määrittelytiedostoon ja lisää komento SSPIBasicPreferred On. Tämä mahdollistaa IE-tunnistuksen jälleen, mutta muut selaimet ja Subversion eivät kykene tunnistamaan käyttäjiä annettua polkua vastaan.

  • Salli selaaminen myös salaamatonta tunnistusta käyttäen (ilman SSL-käytäntöä). Outoa kyllä, IE:llä ei ole tunnistusongelmia, mikäli yhteys ei ole SSL-salattu.

  • "Standardissa" SSL-kokoonpanossa Apachen virtual SSL host -osassa on usein seuraavat komennot:

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

    Tälle kokoonpanolla on (oli?) hyviä syitä, ks. http://www.modssl.org/docs/2.8/ssl_faq.html#ToC49 Jos haluat NTLM-tunnistuksen, sinun pitää käyttää keepalive-komentoa. Jos poistat kommentit koko SetEnvIf-osasta, sinun pitäisi pystyä tunnistamaan käyttäjät IE:ssä käyttäen Windows-tunnistusta SSL-yhteyden yli Apachella käyttäen mukana toimitettavaa mod_auth_sspi-modulia.

Pakotettu SSL-kytkeytyminen

Kun olet ottanut SSL-tekniikan käyttöön parantaaksesi arkistosi turvallisuutta, saatat haluta estää normaalin kytkeytymisen (http) ja sallia vain https-kytkeytymisen. Tämä vaatii ylimääräisen SSLRequireSSL-komennon Subversionin <Location>-lohkoon.

Esimerkki <Location>-lohkosta näyttää seuraavalta:

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

Asiakasvarmenteiden käyttö SSL-näennäispalvelimilla

Lähetetty TortoiseSVN-postituslistalle Nigel Greenin toimesta. Kiitos!

Joissain tapauksissa saatat joutua määrittämään yhdelle palvelimelle kaksi SSL-näennäispalvelinta: Yhden ilman asiakasvarmennetta julkista verkkoa varten ja toisen pakollisen asiakasvarmenteen kanssa Subversion-asiakkaille.

Lisäämällä SSLVerifyClient Optional-direktiivin Apachen palvelinkohtaisiin asetuksiin (ts. ei VirtualHost tai Directory -lohkohin) pakotat Apachen pyytämään asiakasvarmennetta ensimmäisessä SSL-kättelyssä. Johtuen virheestä mod_ssl-modulissa on välttämätöntä, että varmenne pyydetään tässä kohtaa, koska se ei toimi, mikäli SSL-yhteys neuvotellaan uudestaan.

Ratkaisu on lisätä seuraava direktiivi siihen näennäiskonehakemistoon, jonka haluat varata Subversion-käyttöön:

SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"

Direktiivi sallii pääsyn hakemistoon vain, jos asiakasvarmenne vastaanotetaan ja tarkastetaan onnistuneesti.

Yhteenvetona, Apachen oleelliset määrittelyosat ovat seuraavat:

SSLVerifyClient Optional

### Näennäiskonemäärittely JULKISELLE koneelle (ei varmennetta)

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

### Näennäiskonemäärittely SUBVERSIONille (pakollinen varmenne)
<VirtualHost 127.0.0.1:443>
  <Directory "subversion host root path">
    SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"
  </Directory>

  <Location /svn>
    DAV svn
    SVNParentPath /polku_arkistoon
  </Location>
</VirtualHost>