0251 / 590 644 - 0
info@a-coding-project.de

SVN: Sicherheit mit Subversion

Da mit Subversion die Daten mit HTTP übertragen werden, kann dies logischerweise auch über das Internet passieren. Aus diesem Grund muss auf die Sicherheit geachtet werden, so dass nicht jeder die Möglichkeit hat, die im SVN überwachten Daten zu manipulieren. Die erste Möglichkeit, für die Sicherheit zu sorgen, ist die bekannte Basic-Authentifizierung.

Basic-Authentifizierung mit SVN

An der Einrichtung dieser Sicherheitshürde ändert sich auch bei SVN nichts. Es gelten die bekannten Regeln, die es im Zusammenhang mit diesem Verfahren gibt. Bezogen auf das Beispiel wird dem SVN-Abschnitt in der httpd.conf-Datei des Apache-Webservers folgende Zeilen hinzugefügt:

AuthType Basic
AuthName "Subversion repository"
AuthUserFile "D:/subversion/myrepos/.htusers"
Require valid-user

Nachdem die ".htusers"-Datei in das in der "AuthUserFile" angegebene Verzeichnis kopiert und der Webserver neu gestartet wurde, erscheint im Browser bei der Anzeige der Revision jetzt das bekannte Fenster "Netzwerkkennwort eingeben". Anhand des Commit-Prozesses zeigt die folgende Grafik, wie sich der Vorgang ändert:

Commit-Vorgang mit Basic-Authentifizierung
Darstellung: Commit-Vorgang mit Basic-Authentifizierung

Nach der Eingabe des "svn ci"-Kommandos wird automatisch nach dem Passwort für einen User gefragt. Dieser User ist standardmäßig der Systemnutzer, mit dem der Entwickler auf Betriebssystemebene eingeloggt ist. Diese Passwortanfrage muss durch einen Klick auf "Return" quittiert werden. Erst danach bekommt man die Möglichkeit, einen neuen User und sein dazugehöriges Passwort einzugeben und da muss man die Userdaten, die man für die Basic-Authentifizierung festgelegt hat, eingeben.

Einsatz von SSL

Auch eine URL, die mit SVN angesprochen wird, stellt kein Hindernis da. Gegebenenfalls muss im Browser das Zertifikat akzeptiert werden, wenn ihm dieses nicht bekannt ist, bevor die aktuelle Revision des Repositories angezeigt wird, aber auf Konsolenebene ändert sich nichts wesentliches, außer das bei der der Angabe der URL "https" anstatt "http" verwendet werden muss - unabhängig vom eigentlichen SVN-Kommando. Es besteht die Möglichkeit, dass auch auf der Konsole die Informationen angezeigt werden, die man im Browser sieht, wenn das Zertifikat nicht bekannt ist. Der folgende Abschnitt zeigt ein Beispiel, wie eine solche Meldung aussehen kann:

svn list https://host.example.com/repos/project

Error validating server certificate for 
   'https://host.example.com:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: host.example.com
 - Valid: from Jan 30 19:23:56 2004 GMT until Jan 30 19:23:56 2006 GMT
 - Issuer: CA, example.com, Sometown, California, US
 - Fingerprint: 7d:e1:a9:34:33:39:ba:6a:e9:a5:c4:22:98:7b:76:5c:92:a0:9c:7b

(R)eject, accept (t)emporarily or accept (p)ermanently?

Dem Nutzer stehen die gleichen Möglichkeiten zum Umgang mit dieser Meldung zur Verfügung wie im Browser. Er kann das Zertifikat verweigern, für immer oder nur für die jeweilige Sitzung akzeptieren.