Der vielseitigste aller Server für Subversion ist der auf Apache basierende Server. Obwohl er ein wenig schwieriger einzurichten ist, bietet er den anderen Varianten gegenüber einige Vorteile:
Der Apache-basierte Subversion Server nutzt das WebDAV Protokoll, das auch von vielen anderen Programmen unterstützt wird. Sie können ein solches Verzeichnis zum Beispiel als „Web-Ordner“ im Windows Explorer einbinden und wie jeden anderen Ordner im Dateisystem benutzen.
Sie können Ihren Web-Browser per http:// auf die URL des Projektarchivs zeigen lassen und dessen Inhalt betrachten, ohne einen Subversion Client zu installieren. Dies ermöglicht einem großen Anwenderkreis auf Ihre Daten zuzugreifen.
Sie können jedes Anmeldeverfahren nutzen, das von Apache unterstützt wird, zum Beispiel SSPI und LDAP.
Da Apache sehr stabil und sicher ist, bekommen Sie damit automatisch die gleiche Sicherheit (zum Beispiel SSL Verschlüsselung) für Ihr Projektarchiv.
Für die Installation von Apache unter Windows benötigen Sie zumindest Windows2000 / WinXP+SP1 oder Windows2003,Vista oder Server 2008.
Bitte beachten Sie, dass Windows XP ohne Servicepack 1 zu fehlerhaften Netzwerkdaten führt und dadurch Ihr Projektarchiv beschädigt werden kann!
Laden Sie die neueste Version des Apache Web-Servers von http://httpd.apache.org/download.cgi. Achten Sie darauf, dass Sie Version 2.2.x oder neuer herunterladen - Die 1.3.xx arbeiten nicht mit Subversion zusammen!
Den MSI Installer für Apache finden Sie, indem Sie auf other files klicken und dann zu binaries/win32 navigieren. Wenn Sie SSL benötigen sollten Sie apache-2.2.x-win32-x86-openssl-0.9.x.msi herunterladen.
Sobald Sie den Apache 2 Installer haben, können Sie ihn mit einem Doppelklick starten. Sie werden Schritt für Schritt durch den Installationsprozess geführt. Stellen Sie sicher, dass Sie die Server URL korrekt eingeben. Wenn Sie keinen DNS Server haben, nehmen Sie stattdessen einfach die IP Adresse. Wir raten dazu, Apache für Alle Benutzer, auf Port 80, als Dienst zu installieren. Achtung: Wenn Sie bereits IIS oder ein anderes Programm installiert haben, dass auf Port 80 lauscht, kann die Installation fehlschlagen. Wenn das passiert, gehen Sie in C:\Programme\Apache Group\Apache2\conf und öffnen Sie dort die Datei httpd.conf. Suchen Sie den Eintrag Listen 80 und ändern Sie diesen in eine freie Portnummer, z.B. Listen 81. Starten Sie die Installation erneut - Diesmal sollte sie ohne Probleme durchlaufen.
Testen Sie nun, ob Apache korrekt installiert ist, indem Sie in Ihren Web-Browser die URL http://localhost/ eingeben. Eine Standard Webseite sollte angezeigt werden.
Wenn Sie sich entscheiden, Apache als Dienst zu installieren, beachten Sie bitte dass er dann mit den lokalen SYSTEM Berechtigungen läuft. Es ist wesentlich sicherer, wenn Sie für Apache ein eigenes Benutzerkonto anlegen in dessen Kontext der Dienst dann läuft.
Stellen Sie sicher, dass das Konto unter dem der Apache Server läuft, einen eigenen Eintrag in der Zugriffskontrollliste des übergeordneten Verzeichnisses für die Projektarchive hat (Rechtsklick Verzeichnis | Eigenschaften | Sicherheit), der dem Konto vollen Zugriff auf das Verzeichnis gestattet. Andernfalls können Anwender keine Änderungen zum Projektarchiv übertragen.
Selbst wenn Apache als „Lokales System“ läuft, brauchen Sie immer noch einen solchen Eintrag (der in diesem Fall das SYSTEM-Konto sein wird).
Wenn Apache diese Berechtigung nicht gesetzt hat, werden Ihre Benutzer „Zugriff verweigert“-Fehlermeldungen erhalten, die im Apache-Fehlerlog als Fehler 500 erscheinen.
Laden Sie die neuste Version von Subversion für Apache unter Win32 herunter. Stellen Sie sicher, dass sie die richtige Version für Ihren Apachen wählen, da Sie sonst seltsame Fehlermeldungen beim Neustart erhalten. Für Apache Version 2.2.x gehen Sie zu http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100.
Starten Sie den Subversion-Installer und folgen Sie den Anweisungen. Wenn der Subversion-Installer bemerkt, dass Sie Apache installiert haben, haben Sie es fast geschafft. Wenn er keinen Apache-Server finden konnte, müssen Sie einige zusätzliche Schritte durchführen.
Gehen Sie mit dem Windows Explorer ins Installationsverzeichnis von Subversion (für gewöhnlich c:\Programme\Subversion) und finden Sie die Dateien /httpd/mod_dav_svn.so und mod_authz_svn.so. Kopieren Sie diese Dateien ins Apache-Modulverzeichnis (für gewöhnlich c:\Programme\apache group\apache2\modules ).
Kopieren Sie die Dateien /bin/libdb*.dll und /bin/intl3_svn.dll aus dem Subversion-Installationsverzeichnis in dass Apache /bin Verzeichnis.
Bearbeiten Sie die Konfigurationsdatei von Apache (für gewöhnlich C:\Programme\Apache Group\Apache2\conf\httpd.conf) mit einem Texteditor wie Notepad und nehmen Sie die folgenden Änderungen vor:
Entfernen Sie den Kommentar (d.h. das '#'-Zeichen) in den folgenden Zeilen:
#LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so
Fügen Sie die folgenden zwei Zeilen an das Ende des LoadModule-Abschnittes ein.
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
Jetzt haben Sie Apache und Subversion eingerichtet, aber Apache weiß noch nicht, wie mit Subversion-Clients wie TortoiseSVN umzugehen ist. Um Apache beizubringen, welche URL für Subversion-Projektarchive benutzt werden soll, müssen Sie die Apache-Konfigurationsdatei (für gewöhnlich platziert in c:\Programme\apache group\apache2\conf\httpd.conf) mit einem beliebigen Texteditor (z.B. Notepad) bearbeiten:
Am Ende der Konfigurationsdatei fügen Sie die folgenden Zeilen hinzu:
<Location /svn> DAV svn SVNListParentPath on SVNParentPath D:\SVN #SVNIndexXSLT "/svnindex.xsl" AuthType Basic AuthName "Subversion-Projektarchive" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location>
Dies konfiguriert Apache so, dass alle Ihre Subversion-Projektarchive physikalisch unterhalb von D:\SVN liegen. Die Projektarchive werden der Außenwelt unter folgender URL zu Verfügung gestellt: http://MyServer/svn/. Der Zugriff ist auf bekannte Benutzer/Passwörter beschränkt, die in der passwd-Datei aufgelistet sind.
Um die passwd-Datei zu erstellen, öffnen Sie den Kommandozeilenprompt (DOS-Box) noch einmal, wechseln in den apache2 Ordner (für gewöhnlich c:\Programme\apache group\apache2) und erstellen Sie die Datei, indem Sie
bin\htpasswd -c passwd <username>
eintippen. Dies wird eine Datei mit dem Namen passwd erstellen, die für die Anmeldung verwendet wird. Zusätzliche Benutzer können mit
bin\htpasswd passwd <username>
hinzugefügt werden.
Starten Sie den Apache-Dienst noch einmal neu.
Öffnen Sie mit Ihrem Web-Browser die URL http://MeinServer/svn/MeinNeuesProjektarchiv (wobei MeinNeuesProjektarchiv der Name des Subversion-Projektarchivs ist, das Sie zuvor erstellt haben). Wenn alles gut gegangen ist, sollten Sie nach einem Benutzernamen und Passwort gefragt werden und können dann den Inhalt Ihres Projektarchivs sehen.
Eine kurze Erklärung dessen was Sie gerade eingegeben haben:
Tabelle 3.1. Apache httpd.conf Einstellungen
| Eigenschaft | Erklärung |
|---|---|
| <Location /svn> | bedeutet, dass die Projektarchive unter der URL http://MyServer/svn/ aufrufbar sind. |
| DAV svn | teilt Apache mit, welches Modul (in diesem Fall das Subversion Modul), für diese URL zuständig ist. |
| SVNListParentPath on | Für Subversion 1.3 und neuer ermöglicht diese Direktive, die verfügbaren Projektarchive unter SVNParentPath aufzulisten. |
| SVNParentPath D:\SVN | teilt Apache mit, dass die Projektarchive unterhalb von D:\SVN liegen. |
| SVNIndexXSLT "/svnindex.xsl" | XML Stylesheet, mit dem die Standardansicht des Projektarchivs im Web-Browser formatiert wird. |
| AuthType Basic | zur Anmeldung wird ein einfaches Verfahren mit Name / Passwort verwendet. |
| AuthName "Subversion repositories" | wird als Information an das Programm (z.B. Web-Browser, TortoiseSVN) weitergereicht, mit dem sich der Benutzer am Projektarchiv anmeldet. |
| AuthUserFile passwd | gibt die Passwortdatei für die Anmeldung an. |
| AuthzSVNAccessFile | Name der Datei in der die Zugriffsrechte innerhalb der Subversion Projektarchive festgelegt sind. |
| Require valid-user | legt fest, dass nur Personen, die sich korrekt angemeldet haben, auf die URL zugreifen dürfen. |
Aber das ist nur ein Beispiel. Der Apache Web-Server bietet Ihnen viele weitere Möglichkeiten.
Wenn Sie möchten, dass Ihr Projektarchiv für jedermann Lesezugriff bietet, aber der Schreibzugriff bestimmten Benutzern vorbehalten bleibt, können Sie die Zeile
Require valid-user
in
<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>
ändern.
Mit einer passwd Datei können Sie den Zugriff auf alle Ihre Projektarchive zentral steuern. Wenn Sie genau einstellen wollen, welche Benutzer / Gruppen welche Berechtigungen in Ihren Projektarchiven haben sollen, entfernen Sie das Kommentarzeichen vor
#AuthzSVNAccessFile svnaccessfile
und legen Sie die Subversion Zugriffsdatei svnaccessfile an. Apache stellt sicher, dass nur angemeldete Benutzer auf Ihre /svn Location zugreifen können und wird dann den Benutzernamen an das Subversion AuthzSVNAccessFile Modul weiterreichen, das die Benutzerrechte fein gegliedert anhand der Regeln in der Subversion Zugriffsdatei steuert. Beachten Sie, dass die Pfade entweder als Projektarchiv:Pfad oder einfach als Pfad angegeben werden. Wenn Sie kein Projektarchiv angeben, wird die Regel auf alle Projektarchive unterhalb SVNParentPath angewendet. Das Format der von mod_authz_svn verwendeten Berechtigungsdatei ist in „Pfadbasierte Autorisierung“ beschrieben.
Um die Ansicht des Projektarchivs im Web-Browser 'schöner' zu formatieren, kommentieren Sie die Zeile
#SVNIndexXSLT "/svnindex.xsl"
aus und kopieren die Dateien svnindex.xsl, svnindex.css und menucheckout.ico in das Document Root Verzeichnis des Apache Servers (normalerweise C:/Programme/Apache Group/Apache2/htdocs). Dieses Verzeichnis wird mit der DocumentRoot Anweisung in der Apache Konfigurationsdatei eingestellt.
Sie können diese drei Dateien direkt aus unserem Projektarchiv http://tortoisesvn.googlecode.com/svn/trunk/contrib/svnindex herunterladen. („TortoiseSVN ist frei!“ erklärt, wie man auf das TortoiseSVN Projektarchiv zugreift).
Die XSL Datei aus dem TortoiseSVN Projektarchiv enthält einen netten Kniff. Wenn Sie das Projektarchiv mit ihrem Web-Browser betrachten, wird neben jedem Ordner Ihres Projektarchivs ein Symbol angezeigt. Wenn Sie auf dieses Symbol klicken, wird sofort der Auschecken-Dialog von TortoiseSVN für die entsprechende URL aufgerufen.
Wenn Sie die SVNParentPath-Direktive benutzt haben, brauchen Sie die Apache-Konfigurationsdatei nicht jedes Mal zu ändern, wenn Sie ein neues Subversion-Projektarchiv erstellt haben. Erstellen Sie das neue Projektarchiv einfach an der gleichen Stelle wie das erste Projektarchiv und Sie sind fertig! In meiner Firma habe ich über SMB (normaler Windows-Dateizugriff) direkten Zugriff auf diesen speziellen Ordner auf dem Server. Also erstelle ich dort einfach einen neuen Ordner, führe den TortoiseSVN-Befehl → aus und ein neues Projekt hat ein Zuhause...
Wenn Sie Subversion 1.3 oder neuer benutzen, können Sie die SVNListParentPath on Direktive verwenden, damit Apache eine Liste aller verfügbaren Projekte erzeugt, falls Sie auf den SVNParentPath anstatt auf ein Projektarchiv zugreifen.
Das mod_authz_svn Modul ermöglicht fein gegliederte Zugriffsberechtigungen basierend auf Benutzernamen und Pfaden im Projektarchiv. Diese Funktionen stehen seit jeher mit dem Apache Server und seit Subversion 1.3 auch mit svnserve zur Verfügung.
Eine Beispieldatei könnte folgendermaßen aussehen:
[groups] Admin = john, kate Entwickler1 = john, rachel, sally Entwickler2 = kate, peter, mark Doku = bob, jane, mike Training = zak # Standardzugriffsrechte für alle Projektarchive # Jeder erhält Lesezugriff, Admins können schreiben, # Karl Napf wird ausgeschlossen [/] * = r @Admin = rw karlnapf = # Die Entwickler erhalten Vollzugriff auf ihre Projektarchive # Hans Dampf arbeitet bei dem großen Projekt noch mit [Projekt1:/] @Entwickler1 = rw [Projekt2:/] @Entwickler2 = rw [Riesenprojekt:/] @Entwickler1 = rw @Entwickler2 = rw hansdampf = rw #Die Doku Gruppe erhält Vollzugriff auf die doc Unterverzeichnise [/trunk/doc] @Doku = rw # Anfänger dürfen nur im Training Projektarchiv wüten [TrainingRepos:/] @Training = rw
Beachten Sie, dass die Überprüfung aller Pfade, besonders wenn das Log angezeigt wird, eine teure Operation sein kann. Der Server prüft jeden geänderten Pfad in jeder Revision auf Lesbarkeit, was bei Revisionen, die eine große Anzahl Dateien betreffen, sehr Zeitaufwändig sein kann.
Anmeldung und Zugriffsberechtigung (Autorisierung) sind separate Prozesse. Damit ein Anwender auf einen Pfad im Projektarchiv zugreifen kann, muss er beide Bedingungen erfüllen. Er muss angemeldet sein und die Berechtigung zum Zugriff auf den gewünschten Pfad besitzen.
Wie Sie bestimmt bemerkt haben, benötigen Sie für jeden Anwender einen eigenen Eintrag in der passwd Datei. Falls Sie aus Sicherheitsgründen verlangen, dass die Benutzerpasswörter regelmäßig geändert werden, müssen Sie das jedes Mal von Hand machen.
Falls Sie auf das Projektarchiv in einem Windows Netzwerk mit einem Domänencontroller zugreifen, gibt es eine einfache Lösung: mod_auth_sspi!
Das Original SSPI Modul wurde von Syneapps inklusive Quellcode zur Verfügung gestellt. Das Modul wurde jedoch nicht mehr weiterentwickelt. Aber keine Angst, die Open-Source Gemeinde hat sich des Moduls angenommen und es weiterentwickelt. Das Projekt hat ein neues Zuhause auf SourceForge.
Laden Sie das Modul, das zu Ihrer Apache-Version passt herunter und kopieren Sie die Datei mod_auth_sspi.so in den Apache modules Ordner.
Bearbeiten Sie die Apache Konfigurationsdatei. Fügen Sie dort die Zeile
LoadModule sspi_auth_module modules/mod_auth_sspi.so
in den LoadModule Abschnitt ein. Stellen Sie sicher, dass Sie diesen Eintrag vor der Zeile
LoadModule auth_module modules/mod_auth.so
einfügen.
Damit die Subversion Location dieses Anmeldeverfahren verwendet, müssen Sie die Zeile
AuthType Basic
in
AuthType SSPI
ändern. Weiterhin müssen Sie die Zeilen:
SSPIAuth On SSPIAuthoritative On SSPIDomain <domaincontroller> SSPIOmitDomain on SSPIUsernameCase lower SSPIPerRequestAuth on SSPIOfferBasic On
in den <Location /svn> Abschnitt einfügen. Wenn Sie keinen Domänencontroller haben, lassen Sie den Eintrag für den Namen <domaincontroller> unverändert.
Beachten Sie, dass Sie bei Verwendung von SSPI keine AuthUserFile Zeile mehr benötigen, um eine Passwortdatei zu definieren. Apache wird Ihren Namen und Ihr Passwort gegen den Windows Domänencontroller verifizieren. Sie müssen die Benutzerliste in svnaccessfile anpassen, um Anmeldungen der Form DOMÄNE\username ebenfalls zuzulassen.
Die SSPI Anmeldung wird nur für Verbindungen aktiviert, die per SSL gesichert sind (https). Wenn Sie nur normale http Verbindungen zu Ihrem Server aufbauen, steht SSPI nicht zur Verfügung.
Eine Anleitung zum Einrichten von SSL auf Ihrem Server findet sich in „Den Server mit SSL sichern“.
Subversion AuthzSVNAccessFile Dateien berücksichtigen bei Benutzernamen die Groß- / Kleinschreibung (JUser unterscheidet sich von juser).
In der Microsoft Welt wird die Schreibweise bei Windows Domänen und Benutzernamen ignoriert. Trotzdem legen viele Administratoren gerne Benutzerkonten wie JUser an.
Dieser Unterschied kann schmerzhaft sein, wenn Sie SSPI Anmeldung unter Windows verwenden und der Benutzername in der gleichen Schreibweise an Subversion weitergereicht wird, wie der Anwender ihn eingegeben hat, da JUser und juser für Subversion verschiedene Personen sind. Der Internet Explorer reicht den Anmeldenamen oft automatisch in der Schreibweise, in der das Konto angelegt wurde, an Apache weiter.
Das Ergebnis davon ist, dass Sie für jeden Anwender mindestens zwei Einträge in Ihrer AuthzSVNAccessFile Datei benötigen. Einen Eintrag in Kleinbuchstaben und einen Eintrag in der Schreibweise wie das Konto angelegt wurde. Weiterhin müssen Sie Ihre Anwender dahingehend trainieren, dass sie sich immer in Kleinbuchstaben anmelden, wenn sie einen Subversion Client wie TortoiseSVN benutzen.
Die Fehler- und Zugriffs-Logdateien von Apache sind Ihre besten Freunde, wenn es darum geht, Probleme dieser Art zu lokalisieren und zu beseitigen, da Sie Ihnen anzeigen, in welcher Schreibweise ein Anmeldename an das Subversion AuthzSVNAccessFile Modul weitergereicht wurde. Sie müssen eventuell etwas mit dem exakten Format der Anmeldenamen in svnaccessfile experimentieren (z.B. DOMÄNE\user und DOMÄNE//user), um alles ans Laufen zu bekommen.
Es ist auch möglich, mehr als eine Anmeldequelle für Ihr Subversion Projektarchiv zu haben. Um dies zu erreichen, müssen Sie jeden Anmeldetyp als unmaßgeblich („non-authoritative‚) festlegen, so dass Apache mehrere Quellen auf eine korrekte Name/Passwort Kombination überprüft.‘“
Ein übliches Szenario ist es, sowohl die Windows Domänenanmeldung als auch eine passwd Datei zu verwenden, so dass Sie Benutzern, die kein Domänenkonto besitzen, Zugriff auf das Projektarchiv gewähren können.
Um sowohl die Windows Domänenanmeldung als auch Anmeldung per Passwortdatei zu ermöglichen, fügen Sie die folgenden Einträge innerhalb des <Location> Blocks Ihrer Apache-Konfiguration ein:
AuthBasicAuthoritative Off SSPIAuthoritative Off
Hier ist ein Beispiel einer vollständigen Apache Konfiguration für gemeinsamen Windows Domänenzugriff und passwd Dateianmeldung:
<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>
Obwohl Apache 2.2.x OpenSSL unterstützt, wird diese Option standardmäßig nicht genutzt und muss manuell aktiviert werden.
Kommentieren Sie die folgenden Zeilen in der Apache Konfigurationsdatei aus:
#LoadModule ssl_module modules/mod_ssl.so
und am Ende:
#Include conf/extra/httpd-ssl.conf
Dann ändern Sie die Zeile (in einer Zeile):
SSLMutex "file:C:/Program Files/Apache Software Foundation/\
Apache2.2/logs/ssl_mutex"in
SSLMutex default
Als nächstes benötigen Sie ein SSL Zertifikat. Dazu starten Sie eine Kommandozeile (DOS-Box) und wechseln in den Apache Ordner (z.B. C:\Programme\apache group\apache2) und geben den folgenden Befehl ein:
bin\openssl req -config conf\openssl.cnf -new -out my-server.csr
Sie werden nach einer Passphrase gefragt. Bitte nutzen Sie keine einfachen Wörter sondern ganze Sätze, z.B. ein Teil eines Gedichts. Je länger die Passphrase ist, desto besser. Außerdem müssen Sie die URL Ihres Servers angeben. Alle anderen Angaben sind optional. Sie sollten Sie aber trotzdem ausfüllen.
Normalerweise wird die privkey.pem Datei automatisch generiert. Wenn nicht, müssen Sie sie mit folgendem Befehl selbst erzeugen:
bin\openssl genrsa -out conf\privkey.pem 2048
Danach geben Sie folgende Befehle, jeweils auf einer Zeile ein:
bin\openssl rsa -in conf\privkey.pem -out conf\server.key
und
bin\openssl req -new -key conf\server.key -out conf\server.csr
-config conf\openssl.cnfund danach
bin\openssl x509 -in conf\server.csr -out conf\server.crt
-req -signkey conf\server.key -days 4000Dies wird ein Zertifikat erstellen, das in 4000 Tagen verfällt. Abschließend geben Sie:
bin\openssl x509 -in conf\server.cert -out conf\server.der.crt
-outform DER
ein. Diese Befehle legen folgende Dateien im Apache conf Ordner an: server.der.crt, server.csr, server.key, .rnd, privkey.pem, server.cert.
Starten Sie den Apache Dienst neu.
Rufen Sie Ihren Web-Browser mit der URL https://servername/svn/project auf.
Wenn Sie Ihren Server mit SSL sichern und sich über eine Windows Domäne anmelden, werden Sie feststellen, dass die Anzeige des Projektarchivs im Internet Explorer nicht mehr funktioniert. Das liegt daran, dass sich der Internet Explorer nicht mehr anmelden kann. Andere Web-Browser haben dieses Problem nicht und sowohl TortoiseSVN als auch andere Subversion Clients können sich problemlos anmelden.
Wenn Sie trotzdem IE verwenden wollen, um Projektarchive zu betrachten, können Sie entweder:
Einen separaten <Location /path> Block in der Apache Konfigurationsdatei definieren und den Eintrag SSPIBasicPreferred On hinzufügen. Dies ermöglicht IE die Anmeldung wieder, aber andere Web-Browser und Subversion können sich an dieser Location nicht anmelden.
Zusätzlich das Betrachten des Projektarchivs ohne Verschlüsselung (ohne SSL) anbieten. Seltsamerweise hat IE kein Problem mit der Anmeldung, wenn die Übertragung nicht verschlüsselt erfolgt.
In der SSL „Standardkonfiguration“ findet sich häufig der folgende Eintrag beim beim virtuellen SSL Host:
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Es gibt (gab?) gute Gründe für diesen Eintrag. Siehe ModSSL FAQ. Wenn Sie allerdings das NTLM Anmeldeverfahren nutzen wollen müssen Sie keepalive verwenden. Wenn Sie den gesamten SetEnvIf Block auskommentieren, sollten Sie sich mit dem IE per Windows Anmeldung über SSL und dem eingebundenen mod_auth_sspi Modul am Apache anmelden können.
Wenn Sie SSL eingerichtet haben, um Ihr Projektarchiv abzusichern, möchten Sie vielleicht den normalen, unverschlüsselten http:// Zugriff sperren und nur https:// zulassen. Dafür müssen Sie zusätzlich die Anweisung SSLRequireSSL in den Subversion <Location> Block einfügen.
Ein Beispiel <Location> Block könnte folgendermaßen aussehen:
<Location /svn> DAV svn SVNParentPath D:\SVN SSLRequireSSL AuthType Basic AuthName "Subversion Projektarchive" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user </Location>
Danke an Nigel Green für diesen Beitrag an die TortoiseSVN Mailingliste!
In manchen Serverkonfigurationen müssen Sie einen einzelnen Server mit zwei virtuellen Hosts einrichten: Den ersten für öffentlichen Web-Zugriff ohne Zertifikat, den zweiten, auf dem ein Subversion Server läuft, durch ein für den Client erforderliches Zertifikat abgesichert.
Durch das Hinzufügen einer SSLVerifyClient Optional Anweisung in die per-server Sektion der Apache Konfiguration (d.h. außerhalb aller VirtualHost und Directory Blöcke) zwingen Sie Apache, ein Client-Zertifikat während des ersten SSL Handshake anzufordern. Aufgrund eines Fehlers in mod_ssl ist es wichtig, dass das Zertifikat zu diesem Zeitpunkt angefordert wird, da es nicht funktioniert, wenn die SSL Verbindung neu ausgehandelt wird.
Die Lösung besteht darin, dem Virtual Host Verzeichnis, dass sie für Subversion absichern wollen, die folgende Anweisung hinzuzufügen:
SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"
Diese Anweisung ermöglicht nur dann den Zugriff auf das Verzeichnis, falls ein Client-Zertifikat empfangen und erfolgreich verifiziert wurde.
Zusammengefasst sehen die relevanten Zeilen der Apache Konfiguration folgendermaßen aus:
SSLVerifyClient Optional
### Virtual Host Konfiguration für den ÖFFENTLICHEN Host
### (ohne dass ein Zertifikat benötigt wird)
<VirtualHost 127.0.0.1:443>
<Directory "pathtopublicfileroot">
</Directory>
</VirtualHost>
### Virtual Host Konfiguration für SUBVERSION
### (ein Client-Zertifikat wird benötigt)
<VirtualHost 127.0.0.1:443>
<Directory "subversion host root path">
SSLRequire %{SSL_CLIENT_VERIFY} eq "SUCCESS"
</Directory>
<Location /svn>
DAV svn
SVNParentPath /pathtorepository
</Location>
</VirtualHost>