SSL Webdav u. Windows 7

/root

Lt. Commander
Registriert
Okt. 2007
Beiträge
1.285
hey!

hab hier ein kleines Prob mit meinem Webdav Zugang.

Habe auf meinem Ubuntu 9.10 Server Apache2 mit Webdav aktiv. Ich erzwinge das Webdav nur mit SSL (=https) angesprochen werden darf und authentifiziere mich über die Methode Basic.

Unter Linux kann ich auf die Freigabe ohne Probleme zugreifen, nur Windows 7 will die Freigabe einfach nicht mounten.
Habe auch schon im regedit den Wert "BasicAuthLevel" auf 2 gesetzt.

Wenn ich folgenden Befehl eintippe:
net use * \\SERVERADRESSE@ssl\w3bdav/ /user:BENUTZER PASSWORT

bekomme ich die Fehlermeldung "Netzwerkanmeldung fehlgeschlagen"

die "Webdav-Adresse" die unter Linux funktioniert lautet: "https://SERVERADRESSE/w3bdav". w3bdav ist also der Unter-Ordner auf dem webdav aktiviert ist.

Habe auch schon die GUI mit Netzlaufwerk verbinden versucht :(

Weiss also jemand wie man Webdav + https + BasicAuth unter Windows zum laufen bringt?

PS: könnte es vlt Probleme machen das mein SSL Zertifikat selbst signiert ist?
 
Zuletzt bearbeitet:
/root schrieb:
PS: könnte es vlt Probleme machen das mein SSL Zertifikat selbst signiert ist?
Scheint so zu sein, ich habe das gerade auch mal ausprobiert. Ohne SSL kann ich Windows 7 mit dem Webdav-Server verbinden, aber sobald SSL ins Spiel kommt, ist es vorbei (Bei mir meldet er "Unerwarteter Netzwerkfehler"). Ob das aber wirklich ausschließlich am Zertifikat liegt, wage ich zu bezweifeln.

Laut Wireshark bricht der Windows Host die Verbindung ab. Aus der Kommunikation werde ich noch nicht so ganz schlau, denn um das zu parsen, fehlen mir ein paar Hintergrundinfos.
 
ok, nach unzähligen stunden läuft es jetzt so einigermaßen, aber gleich vorweg: Windows ist ein verdammt zickiger Webdav Client

1. Man muss Digest statt Basic Auth verwenden. Basic wird von Windows als unsicher angesehen -> wird verweigert, hat auch der Reg Key nichts gebracht

2. Man muss folgende Ausnahme am Apache vermerken
Code:
<LimitExcept OPTIONS>
   require valid-user 
</LimitExcept>


3. Es schadet auch nicht folgende Browser relevante Behandlungen zu implementieren:

in die httpd.conf
Code:
# The following directive disables redirects on non-GET requests for
# a directory that does not include the trailing slash.  This fixes a
# problem with Microsoft WebFolders which does not appropriately handle
# redirects for folders with DAV methods.
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
[B]BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully[/B]
BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

4. Der Webdav Client MUSS dem https Zertifikat vertrauen! Also muss man das Zertifikat downloaden (am besten über Firefox oder IE exportieren) und in den Ordner der "Vertrauenswürdigen Stammzertifikate" importieren.

5. Nun kann man über "Computer > Netzlaufwerk verbinden > Verbindung mit einer Website herstellen ... > Weiter > Eine benutzerdefinierete ... > "

Mit der Adresse "https://22.22.222.222/webdavordner" mit dem Ordner verbinden

und diese ganzen Schritte entfallen bei einem Linux Client :freak:

auf jedenfall ein danke an 0x4A6F686E!


PS: meine gesamte Webdav-Ordner konfiguration im Apache
Code:
<Location /webdavfolder>
        Dav On
        AuthType Digest
        AuthName "webdav"
        AuthDigestProvider file
        AuthUserFile /path/to/digestauthfile
        <LimitExcept OPTIONS>
        require valid-user 
        </LimitExcept>
        Options +Indexes
 </Location>
 
Zuletzt bearbeitet:
Hallo /root,

vielen Dank für die Beschreibung deines funktionierenden Setups.

Ich habe gleich mal versucht das mal für einen Hardy Server nachzuvollziehen.
Ich will dabei ein SVN Verzeichnis per webdav freigeben.

Selfsigned Zertifikat ist in Windows 7 importiert.

Die BrowserMatch Kennung ist im Debian Apache unter
/etc/apache2/mods-enabled/setenvif.conf

BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully

Wofür ist da die [3] notwendig? Im Hardy setup steht dort nur 1.[012]

Vorher kam bei Windows die Fehlermeldung "unerwarteter Netzwerkfehler". Jetzt kommt die Fehlermeldung "Das System kann nicht auf die Datei zugreifen" Irgendeine Idee?

meine vhost config:
Code:
<Location />
  DAV svn
  SVNPath /var/kunden/webs/adm1/meine.domain/svn
  AuthzSVNAccessFile /var/kunden/webs/adm1/meine.domain/meine.domain.authz

  AuthType Digest
#  AuthDigestDomain / https://svn.meine.domain/
  AuthDigestProvider file
  AuthName "meine.domain"
  AuthUserFile /home/user/test.passwd
   <LimitExcept OPTIONS>
      require valid-user 
    </LimitExcept>
  Options +Indexes
</Location>
 
Ich habe es unter Karmic Koala auch nicht geschafft, eine verschlüsselte Verbindung mit Windows 7 hinzubekommen. Die Tipps von /root allein reichen leider nicht aus, obwohl ich auch schon alles erwähnte umgesetzt habe.

Irgend eine Kleinigkeit, die es (nur scheinbar) nicht wert war gepostet zu werden, fehlt noch.

Windows selbst meldet mir "EventID: 16397, Quelle: NfsClnt" beim Fehlschlagen der SSL-Verbindung. Er kann keine LDAP-Verbindung zum DC aufbauen. Ist klar, denn sowas habe ich hier Zuhause nicht (und will ich auch nicht haben *grusel*). Weiter sagt er "Ohne de entsprechende UNIX-Identität des Windows-Benutzers kann der Benutzer nicht auf die freigegebenen Ressources (Network File System) zugreifen.

Hmm, NFS wollte ich doch gar nicht und den Haken bei "Verbindung mit anderen Anmeldeinformationen herstellen" hatte ich auch gesetzt.

Was schreibt dein Windows 7 ins Anwendungsprotokoll, wenn die SSL-Verbindung fehlschlägt? Vielleicht kommen wir ja auf diesem Weg dem Ziel etwas näher.

/Edit:
Ich habe gerade mal den NFS-Client unter Windows deinstalliert. Seit dem erscheinen keine Fehler mehr im Log, die Verbindung kommt aber, wie zu erwarten war, dennoch nicht zustande. Also ist diese EventID auch kein Anhaltspunkt. :(
 
Zuletzt bearbeitet:
hey guys,

Also erstens, ich habe mich langsam an die Probleme herangetastet.
  1. ohne SSL und mit Webbrowser zugreifen
  2. anschließend SSL aktivieren und mit Webbrowser zugreifen
  3. SSL + Authentifikation + Webbrowser
  4. SSL + Authentifikation + Windows 7 Client

Wenn bei euch schon die ersten 3 Schritte funktionieren kann nicht mehr viel falsch sein. directory listing ist vermutlich auch aktiviert?!

@0x4A6F686E
NFS ist eigentlich die falsche baustelle, und ich glaube du hast beim baustellen nicht auf den "Verbinden mit Webordner..." Link geklickt, siehe Bild.


Achja und beim Mounten auch darauf achten das man die Adresse die man eingibt, auch mit dem NAMEN (CN=common name) des SSL Zertifikats übereinstimmt!!!
Wenn man also sein Zertifikat auf eine IP ausstellt darf man nicht den DNS-Namen verwenden und umgekehrt, das muss 1:1 übereinstimmen.

PS: vlt hilft euch auch diese Quelle die ich verwendet habe http://marco.dirtyhack.net/blog/index.php?/archives/30-WinXPs-Probleme-mit-WebDAV-ueber-SSL-und-DigestAuth.html
 
Zuletzt bearbeitet:
Huh, ich habe es geschafft. Bei mir lag es tatsächlich am Zertifikat.

Um das Problem zu lösen, habe ich erstmal einen A-Record im DNS für meinen Testserver angelegt: "ubuntu.home.local". Als 2. Schritt habe ich dann mit openssl ein passendes Zertifikat für den Apache erzeugt, welches den Hostnamen als CN enthält. Dieses Zertifikat dann in Windows 7 importiert und fortan konnte ich mit "net use x: \\ubuntu.home.local@ssl\webdav /user:john <passwort>" eine Verbindung aufbauen.

Wenn ich es über den Assistenten anlege, geht es auch direkt auf der 1. Seite (also ohne dem in deinem Screenshot markierten Link zu folgen).

Danke für alle Hinweise.

PS: Bei meinen vorherigen Versuchen hatte ich das Zertifikat (also den CN) einfach auf "WebDAV Test" ausgestellt. Das wollte Windows 7 nicht, hat es aber auch in keinem mir bekannten Log erwähnt.
 
Zuletzt bearbeitet:
Hi hi,
alles ganz gut und schön mit der DIGEST-Authentication klappt es mit dem MS Client unter Windows 7. Wenn ich nun aber die Passwörter der Kunden in der Datenbank nur md5-gehasht liegen habe, was mache ich denn dann?
DIGEST braucht doch entweder ein Plaintext-Passort auf dem Server oder ein ha1=md5("Account:Realm:passwort").

Gibt es einen Ausweg? Eigentlich hat jeder, der einen LDAP anbindet das Problem... :o

Viele Grüße
Arne
 
Zuletzt bearbeitet: (Typo)
Für eine Datenbankverbindung braucht man das Modul mod_auth_mysql oder mod_dbd (ab Apache 2.1). Dann legt man 2 Configs an - die in etwa so anpassen (für mod_dbd):

z.B. auth.conf (für die Authentifizierung)

Code:
#Include between <Directory>...</Directory>

AuthMYSQL on
AuthType Digest
AuthDigestProvider dbd
AuthDigestNonceLifetime 100
AuthDigestQop auth
AuthName adminforexample
Require valid-user
AuthDBDUserPWQuery 'SELECT user_passwd FROM user_table WHERE user_names=s%'

und dann die 2 conf z.B. auth_data.conf (für die Herstellung der Verbindung mit der MySQL-Datenbank)

Code:
#Include between <Virtualhost>...</Virtualhost> not <Directory>!

DBDriver mysql
DBDParams "host=localhost port=3306 dbname=apache_auth_db user=apache_auth pass=password"

#Connection-Pooling
DBDMin  1
DBDKeep 2
DBDMax  8
DBDPersist On
DBDExptime 120

Die 2 configs dann im entsprechenden Container mit "Include file.conf" einfügen. Neustarten und dann sollte es gehen. Natürlich muss die Datenbank inkl. Tabellen vorhanden sein und der MySQL User (welcher nur SELECT Rechte benötigt/bekommen sollte). Und dann noch die User für die Authentifizierung eingeben mit Passwort Hash (MD5).

Achso, das Modul mod_auth_digest muss natürlich auch geladen sein.

DIGEST braucht doch entweder ein Plaintext-Passort auf dem Server oder ein ha1=md5("Account:Realm:passwort").
Es gibt unterschiedliche Arten von MD5 - MD5, MD5-Base64, MD5-Unix etc. Damit der Apache das Passwort aus der MySQL Datanbank lesen kann, muss es dort im normalen MD5 (also nur Hash) gespeichert sein. Plaintext funktioniert nicht. (Default: AuthDigestAlgorithm MD5)
 
Zuletzt bearbeitet:
Jetzt muss ich den alten Thread hier nochmal ausgraben, denn ich stehe vor dem selben Problem. Im Post #6 von /root komme ich ebenfalls bis zum Punkt 3. Also ich kann mich via Webbrowser anmelden, per SSL natürlich. Nur das Mappen des WebDAV Verzeichnisses will einfach nicht. Habe genau alles so gemacht, wies hier steht, nur das mit dem Zertifikat auf den DNS erstellen, habe ich nicht ganz verstanden, vlt liegts ja gerade daran? Kann mir das jemand ein wenig genauer erklären, was da beim erstellen des Zertifikats zu beachten ist?

Edit: Habs nun auch endlich hingekriegt. Da ich keinen DNS Server verwende, habe ich lediglich in der hosts und in der Hostname Datei den Hostnamen angepasst, neues Zertifikat auf diesen generiert und in Win importiert.

Freundliche Grüsse
 
Zuletzt bearbeitet:
Zurück
Oben