Сам поднял webdav на сервере.
Адрес вида http://——-.com
И вроде бы всё работает, на мак через finder всё подключается и работает, на windows через браузер тоже ок, даже через программу Cyberduck но через проводник я не могу подключить сетевой диск. Почему?
-
Вопрос задан
-
14543 просмотра
Проблему решил. Оказывается Windows 10 запрещает подключение по http без SSL, только по https. Абсолюдно не очевидно и понять в чем дело практически невозможно.
Оказалось нужно исправить в реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
"BasicAuthLevel" на "2"и перезагрузка Windows.
Пригласить эксперта
-
Показать ещё
Загружается…
Минуточку внимания
What does not work as expected?
WebDAV connection cannot be established on Windows 10.
How can we reproduce it?
Steps to reproduce the behavior:
- Follow the steps described here on Windows 10: https://docs.photoprism.org/user-guide/sync/webdav/
What behavior do you expect?
A connection being established
Can you provide us with example files for testing or screenshots?
See:
https://docs.photoprism.org/user-guide/sync/webdav/
What version you are using?
Latest preview.
Стал рыться в интернете, обнаружил там кучу страшных слов про то как микрософт не любит и не понимает webdav.
Потом стал экспериментировать, внимательно посматривая в логи веб-сервера.
Обнаружилось следующее
1. Таки да, нужна digest authentication, что, впрочем совершенно пофигу. Если у вас на сервере apache, то вам что basic, что digest. cadaver и davfs тоже совершенно не против digest.
2. Когда пытаешься добавить в сетевое окружение location https://www.wagner.pp.ru/dav/username, винда почему-то пытается сделать запрос OPTIONS на https://www.wagner.pp.ru/dav и даже на корень. И если хотя бы в одном из этих мест ей скажут method not allowed или, хуже того, access denied, пойдет она лесом. В смысле скажет что эта URL не годится.
При соблюдении этих условий все прекрасно работает даже без https. Ничего не надо добавлять ни в какие trusted зоны.
3. Если вы хотите https, не поленитесь получить сертификат у Lets Encrypt. Оно проще будет чем заставлять винду верить самовыписанному сертификату, даже при наличии правильно устроенного CA.
В общем, в результате я решил завести себе отдельный виртуальный хост для dav. Так проще
Интересные фрагменты конфига апача
DirectoryIndex disabled
DAVLockDB /var/run/apache2/lockdb/dav_lock
KeepAlive On # Говорят, что это крайне полезно для виндового дав-клиента.
<Location />
DAV On
AuthType Digest
AuthName DAV
AuthDigestDomain /
AuthUserFile /etc/apache2/dav.digest
<limitExcept GET PROPFIND OPTIONS>
Require all denied
</limitExcept>
<Limit GET PROPFIND OPTIONS>
Require valid-user
</limit>
AuthDigestDomain /
</Location>
<Location /vitus>
<LimitExcept GET PROPFIND>
Require user vitus
</limitExcept>
AllowOverride FileInfo
</Location>
<Location /irene>
<LimitExcept GET PROPFIND>
require user irene
</limitExcept>
</Location>
# Дальше тут еще много разных локейшнов с разными правми доступа, но это не принципиально
Upd: в десятке — работает. И по http, и по https. В семерке и 2008r2 не работает. Причем не работает от слова совсем — ни в логаха апача, ни в tcpdump-е ни одной попытки послать http(s)-запрос. Прописывание в Trusted Zone не помогает.
This entry was originally posted at https://vitus-wagner.dreamwidth.org/1941828.html. Please comment there using OpenID. Now there are comments
Доброго времени суток.
Поднят сервер WebDav на Linux Apach2:
cat etc/apache2/conf-available/webdav.conf
DavLockDB /var/www/DavLock
Alias /webdav /var/www/webdav
Alias /share /var/www/webdav
<Directory /var/www/webdav>
DAV On
AuthType Basic
AuthName "private area"
AuthBasicProvider PAM
AuthPAMService apache
Require valid-user
</Directory>
Машина с WebDav находится в изолированной от пользователей сети. Доступ к машине осуществляется через прокси на nginx:
(изначальный конфиг)
cat /etc/nginx/conf.d//webdav.conf
server {
listen 80;
server_name webdav.servername.lan;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name webdav.servername.lan;
include ssl/ser.ssl;
allow 0.0.0.0/0;
access_log off;
open_file_cache_errors off;
location / {
proxy_pass http://ip_address:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 256M;
}
}
На машинах с Linux всё отлично работает, сетевой ресурс подключается, с ним можно работать.
А вот на машинках c Windows была проблема. При попытке подключить сетевой ресурс как диск в проводнике по адресу:
https://webdav.servername.lan/webdav
Проводник запрашивал логин/пароль и после этого выдавал ошибку:
Windows не может получить доступ к
webdav.servername.lan
Не найдено сетевое имя
На сайте social.technet.microsoft.com, а так же на sysadmins.ru нашел совет о внесении изменений для отключения требований проверки SSL:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
"BasicAuthLevel"=dword:00000002
После исправления реестра в Windows, на сервере nginx были внесены изменения:
(измененный конфиг)
cat /etc/nginx/conf.d//webdav.conf
server {
listen 80;
server_name webdav.servername.lan;
allow 0.0.0.0/0;
access_log off;
open_file_cache_errors off;
location / {
proxy_pass http://ip_address:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 256M;
}
}
server {
listen 443 ssl http2;
server_name webdav.servername.lan;
include ssl/ser.ssl;
allow 0.0.0.0/0;
access_log off;
open_file_cache_errors off;
location / {
proxy_pass http://ip_address:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 256M;
}
}
Заработало, но через раз. Если диск отключить, и повторно попытаться подключить — не факт, что подключиться. Иногда сетевой ресурс не с первого раза подключается.
P.S. Сторонние клиенты, например WinSCP или «Диск О:» (от mail.ru) работают корректно с ресурсом https://webdav.servername.lan/webdav через https://. В связи с этим я предположил, что проблема не со стороны сервера WebDav, а скорее всего в самом Windows.
Но при этом, к машинке Windows корректно подключается сетевой ресурс от mail.ru https://webdav.cloud.mail.ru/ именно через https://, что приводит к мысли, что что то не так именно на WebDav-сервере или nginx-прокси, и Windows здесь не причем.
В Интернете, методом гугления, нашел кучу подобных постов с вопрошанием о помощи, которые или остались без ответа, или был дан совет в реестре отключить проверку SSL, что так же вопрошающим (в большинстве случаев) не помогло.
Прошу помощи!
Что именно в этой схеме нужно исправить (предположительно или на WebDav-сервере или nginx-прокси), что бы в Windows сетевой ресурс по протоколу WebDav работал без нареканий.
Правка реестра — это конечно хорошо, но не у всех пользователей есть такая возможность. Хотелось, бы, что бы всё заработало без дополнительных настроек со стороны пользователя.
Заранее спасибо всем ответившим.
