Categories
Uncategorized

SVN mit Apache (HTTP) und SSL (HTTPS) installieren

1) APACHE installieren.

http://apache.mirror.clusters.cc/httpd/binaries/win32/apache_2.2.8-win32-x86-openssl-0.9.8g.msi
(Standard-Installation -> Port 80 (anderer auch möglich, aber firewalltechnisch problematisch)

2) SVN herunterladen und installieren
http://subversion.tigris.org/files/documents/15/41687/svn-1.4.6-setup.exe

3) die .so-Module aus dem bin-Verzeichnis von SVN in das modules-Verzeichnis des Apache kopieren.

4) httpd.conf von Apache (im Ordner /conf) bearbeiten.

Folgende Zeilen müssen (natürlich nicht auskommentiert) in der httpd.conf stehen
(die erste müsste schon vorhanden sein und muss lediglich noch einkommentiert werden)

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

5) Ein Repository anlegen (z.B. mit TortoiseSVN)
5.1)
Es empfiehlt sich, einen Parent-Path für alle Repositories einzurichten.
z.B.: D:\development\svn
5.2) In diesem Pfad ein (oder mehrere) Verzeichnisse anlegen, die dann die Repositories beinhalten.
z.B.: D:\development\svn\main
5.3) Mit installiertem TortoiseSVN gehts am einfachsten (siehe Abschnitt ‘Web-Links’). Auf den neuen
Ordner im Explorer rechtsklicken > TortoiseSVN > Create repository here…
Als Dateisystem empfehle ich FSFS.

6) Repositories im Apache bekannt machen
Folgenden Abschnitt (mit korrektem Pfad) AM ENDE der httpd.conf einfügen:
<Location /svn>
DAV svn
SVNParentPath D:/development/svn
</Location>

Ab diesem Zeitpunkt haben wir ein prinzipiell lauffähiges Subversion-System.

7) Zugriffsrechte regeln
Grundsätzlich kann ein bestehendes DHCP-Verzeichnis angebunden werden.
7.1) Das Tool htpasswd.exe aus dem Verzeichnis “Apache/bin” in das Repository-Hauptverzeichnis kopieren.
Alternativ kann man es auch in die Path-Variable aufnehmen.
7.2) Auth-File mit dem ersten user erzeugen: htpasswd -cm svn-users chle
Es erscheint eine Passwort-Abfrage für den neuen Nutzer.
7.3) Weitere User werden mit dem Kommando ‘htpasswd -m NEUERBENUTZER’ angelegt.
7.4) Auth-File im Apache bekanntmachen (Erweitern der Location-Definition ‘svn’ in httpd.conf)

<Location /svn>
DAV svn
SVNParentPath D:/development/svn
AuthType Basic
AuthName “Subversion repository”
AuthUserFile D:/development/svn/svn-users
Require valid-user
</Location>

8.) HTTPS-Verschlüsselung einrichten
Da die Authentifizierung über das Verfahren ‘HTTP-Basic’ im Plain-Text geschieht,
ist es notwendig, eine zusätzliche Sicherheitsschicht zu verwenden. HTTPS wird
von Apache unterstützt.

8.1) Die OpenSSL Konfiguration muss interessanterweise noch zusätzlich geladen werden
und in den bin-Ordner von Apache kopiert werden: http://www.neilstuff.com/apache/openssl.cnf
Das Kommandline-Tool ‘openssl.exe’ (apache/bin) wird in den folgenden Schritten Mittel der Wahl sein.

8.2) Erstellen eines Self-Signed Certificates

8.2.1) Erstellen des Certificate Requests
openssl req -config openssl.cnf -new -out svnserver.csr -keyout svnserver.pem

Das Tool fragt an dieser Stelle nach vielen Informationen. Allerdings muss keine angegeben werden.
Vor allem das Passwort ist an dieser Stelle nicht nötig, das wird später Apache übernehmen.
Es ist sinnvoll, ein paar Informationen (wie Host, Land, Firma, …) anzugeben, da diese später
im Zertifikat nachlesbar sind.

8.2.2) Erstellen eines passwort-losen Schlüssels für Apache
openssl rsa -in svnserver.pem -out svnserver.key

8.2.3) Datei ‘.rnd’ löschen. Diese könnte u.U. für Cracking-Zwecke missbraucht werden

8.2.4) Zertifikat erzeugen
openssl x509 -in svnserver.csr -out svnserver.cert -req -signkey svnserver.key -days 3650
(Die Gültigkeitsdauer von 10 Jahren ist etwas hoch, aber naja)

8.3) SSL in Apache aktivieren

8.3.1) SSL Modul aktivieren (httpd.conf, Zeile einkommentieren)
LoadModule ssl_module modules/mod_ssl.so

8.3.2) Include httpd-ssl.conf: (Zeile in httpd.conf einkommentieren)
Include conf/extra/httpd-ssl.conf

8.3.3) Zertifikat kopieren
Das erzeugte Zertifikat (bestehend aus den beiden Dateien ‘svnserver.key’ und ‘svnserver.cert’)
in ein neues Verzeichnis conf/ssl kopieren

8.3.4) conf/extra/httpd-ssl.conf anpassen:
Die Einträge ‘SSLCertificateFile’ und ‘SSLCertficateKeyFile’ müssen auf die jeweiligen Files zeigen:

SSLCertificateFile “C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/svnserver.cert”
SSLCertificateKeyFile “C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/svnserver.key”

9) Fertig.
Im Browser kann man unser Beispiel-Repository z.B. unter https://localhost/svn/main erreichen. In Toirtoise-SVN gibt man dieselbe Adresse als URL an.

WEB-LINKS
1) http://svnbook.red-bean.com/en/1.4/svn-book.pdf
2) TortoiseSVN http://tortoisesvn.net/downloads
3) Anleitung “Subversion unter Windows” http://svn.spears.at/
4) Anleitung “Apache mit SSL unter Windwos” http://www.netzadmin.org/server/apache/apache-ssl.htm

Wichtiger Hinweis:
Rechte-Vergabe unter Windows. Apache sollte als Dienst laufen, der die Rechte eines nicht-privilegierten Users besitzt.
Die Zugriffsrechte für die entsprechenden Verzeichnisse müssen dementsprechend angepasst werden.

Es ist sinnvoll, den Zugriff auf das Repository auf HTTPS zu begrenzen (also kein unverschlüsseltes HTTP zu erlauben).