您现在的位置是:首页 >技术教程 >【Cloudreve】正确地用Webdav服务把网盘挂在Windows上网站首页技术教程

【Cloudreve】正确地用Webdav服务把网盘挂在Windows上

几何螃蟹 2024-08-16 00:01:02
简介【Cloudreve】正确地用Webdav服务把网盘挂在Windows上

Cloudreve是一款基于Web平台的在线云存储管理系统。它支持各种常见云存储服务(如Google Drive、OneDrive、Dropbox等)的管理和集成,用户可以通过Cloudreve将这些云存储服务连接起来,方便地管理自己的云存储文件。同时,Cloudreve还具有多用户管理和权限控制,支持文件分享、加密和防盗链等功能,可用于个人、企业等多种场景。

简单的来说,电脑上装个Cloudreve就变成一个可以做资源共享(云盘)的网站了,也能简单地直接让别的(局域网或外网)的电脑通过网络盘符映射的方式直接访问到资源。

它的功能很强大,其中一个比较受到大家关注的功能就是让其他局域网的Windows电脑直接访问的功能,Cloudreve是通过WebDAV协议实现的。

相信各位看到这文章,也是因为碰到WebDAV使用不成功的问题。那么,如何排查无法通过WebDAV访问网盘的问题呢?主要的问题有以下几点:

  1. Cloudreve服务器内的设置
    其实这个应该不是大家的最主要碰到的问题。Cloudreve中可以为每个用户组单独设置“是否允许使用WebDAV访问”的开关,但是这玩意儿默认是开启的,所以如果不小心关掉了,请打开它。
    在这里插入图片描述

  2. 确保需要连接的电脑可以被正确地访问到
    这点其实也比较好排查,主要是防火墙的问题,在Cloudreve运行的电脑上检查下端口是否被防火墙隔了,或者是直接建立一个简单的共享文件夹,看看是否可以从局域网其他电脑通过samba协议看到共享的文件即可,或者ping一下。一般来说也不会存在问题。

  3. Windows的资源管理器HTTPS协议及SSL证书问题
    这是最可能发生问题的点。下面详细展开讲。


解决由于证书和HTTPS协议导致的Cloudreve无法通过WebDAV协议问题


由于Windows系统内置的文件浏览器(也就是平时我们用来看文件那个)内置的WebDAV协议只支持https,但是Cloudreve是http服务,所以,无法直接添加到 “网盘/dav” 的网络映射。

有解决方案提出,需要在客户机电脑上对windows的注册表进行修改,使得其可以强行运行在http协议下,这种方案我没有测试过,也不是很推荐大家使用。

因为考虑到毕竟是网盘,局域网内还好,真是对外网开放的话,首先cloudreve不可能直接http裸奔,二来直接http传文件还是不够安全;所以,要做就做全了,而且通过nginx夹一层https也不是什么很复杂的事情。

下面就是windows系统下用nginx夹一层转发,使得其他windows电脑可以通过nginx开放的https接口链接到cloudreve服务器
在这里插入图片描述
步骤大致分这几个:

  1. 准备https协议所需要的证书
  2. 配置Nginx

以下操作均在服务器上操作完成。

在一切开始进行之前,请确保您的 Cloudreve服务 可以在网页浏览器上正常地通过http协议访问。

制作自己的证书

证书这里自然是要用自己建立的证书了,如果是买的证书,那么需要注意一个很重要的点:

Windows网盘上添加网络位置必须要与证书上声明的地址一致才可以。
这也是大部分无法WebDAV无法访问的另一个重要原因

如果你没有购买证书/不知道啥是证书,那么太棒了,请跟着以下步骤做,WebDAV肯定可以跑起来……

选一个好的位置,比如 D:Certificates文件夹,在菜单栏中执行“cmd”命令。
在这里插入图片描述
输入以下命令:

openssl req -x509 -newkey rsa:4096 -nodes -keyout my_root.pem -days 9999 -out my_root.crt

如果你提示 openssl 是一个未知命令…… 那么就去下载一个openssl并安装吧!

之后你将要输入一大堆东西,你可以输入一些奇怪的内容,但是这些内容将会存下来给其他任何访问你网盘的人看到,所以也别太奇怪了,下图中会有一些翻译来说明它们本应该是要填什么内容,但是既然是自建的证书嘛,这都无所谓啦。

在这里插入图片描述
这个命令将会创建一个2个文件,my_root.pemmy_root.crt。很好,别弄丢它们,一会儿要用到。

接下来,你需要输入另外两条命令,第一条是:

openssl genrsa -out server.pem 4096

这个会生成一个叫做server.pem的文件。然后在输入第二条命令:

openssl req -new -key server.pem -out server.csr

你又会被问到一堆问题,这次稍微会有一些不一样,它最后会问你输入一个“挑战性的密码”,这里,你可以完全不要挑战,两次回车,留空即可。

在这里插入图片描述
好了,你还剩2个步骤就可以结束这一切痛苦了。加油!

然后,用打开记事本,填入以下内容:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
subjectAltName=IP:127.0.0.1,IP:123.222.211.198,DNS:localhost,DNS:www.goodweb.xyz

上述内容中,最后的 subjectAltName 一行需要根据具体部署的情况来进行更改。比如IP具体是多少,域名具体是什么,比如域名是 www.a123b.net,那就要改成

subjectAltName=IP:127.0.0.1,IP:123.222.211.198,DNS:localhost,DNS:www.a123b.net

而且这一行中可以不填写IP,也可以不填写DNS(域名),也可以只填写一个域名/IP。

假设你的域名是 www.abc.net , 服务器地址是 147.23.22.218
那么使用下面一行生成的证书只可以通过 https://www.abc.net/ 来访问(https://147.23.22.218/ 访问时则会提示证书问题,因为访问的方式和证书里声明的方式不一样)

subjectAltName=DNS:localhost

同样的,下面一行生成的证书则只认证通过https://147.23.22.218/的访问

subjectAltName=IP:147.23.22.218

可自由组合多个需要从其他电脑访问的方式,IP/DNS按照上述格式填写即可,用英文逗号分隔

记事本保存上述内容至当前的操作目录,起名字可以很随意,一般来说扩展名为 .ext。本例中就存了D:Certificatesserver.ext,这个文件名字一会儿用得到。

生成证书的最后一步,输入命令:

openssl x509 -req -CA my_root.crt -CAkey my_root.pem -in server.csr -days 9999 -extfile server.ext -out server.crt

其中 -extfile 参数后接的就是上一步记事本保存的ext文件。

最终,生成了我们在 Nginx 里需要用到的文件:server.crt

让我们在进行 Nginx 设置之前,回顾一下我们在这个证书步骤中干了什么,最终得到了什么:

  1. 通过一个命令,一次性生成了两个文件 my_root.pemmy_root.crt
  2. 通过另一个命令,生成了 server.pem
  3. 通过另一个命令,生成了 server.csr(用到了步骤2的文件)
  4. 打开记事本,输入了一堆内容,保存成为了 server.ext
  5. 通过一个命令,生成了 server.crt (用到了1、3、4里的文件)

最终,我们在 Nginx 中需要的是 server.pem (步骤2)和 server.crt(步骤5)。

配置Nginx

首先,需要安装一个Nginx。下面给出CSDN的 INSCODE AI 对于“如何在Windows系统下安装一个Nginx”这个问题的回答,感觉还蛮靠谱的:

以下是在 Windows 系统下安装 Nginx 的步骤:

  1. 下载 Nginx for Windows 程序包,可以从官方网站(http://nginx.org/en/download.html)或者其他安全可靠的网站下载。
  2. 解压缩下载的程序包到合适的目录中,比如 C: ginx。
  3. 打开 C: ginx 目录,运行 nginx.exe。Nginx 将会在后台运行。
  4. 打开浏览器,输入 http://localhost,可以看到 Nginx 的欢迎页面。
  5. 如果想要修改 Nginx 的配置文件,可以在 C: ginxconf 目录下修改 nginx.conf 文件。在修改后,需要重新启动 Nginx 服务,可以在 C: ginx 目录下运行 nginx.exe -s reload 命令重启 Nginx。

如果在启动 Nginx 时遇到问题,可以在 C: ginx 目录下运行 nginx.exe -t 命令,检查 Nginx 配置文件是否存在语法错误。
需要注意的是,在 Windows 系统下使用 Nginx 后,如果想要将其作为服务启动,需要安装 nssm 工具,具体操作可以参考:https://nginx.org/en/docs/windows.html#running-as-a-service-under-windows

打开 Nginx 的配置文件,一般都在nginx的可执行文件目录下的 conf文件夹下可以找到nginx.conf,也就是上述AI回答里的 第5条 中说明的配置文件。

建议将这个默认的配置文件在其他地方做个备份,免得出问题… 因为接下来你将会把里面的东西都删了,改换成我提供的内容:

worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    # HTTPS server
    server {
       listen       5213 ssl;
       server_name  ns-server;

       ssl_certificate      server.crt;
       ssl_certificate_key  server.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://127.0.0.1:5212;
            client_max_body_size 20000m;
       }
    }
}

其中,仔细观察 HTTPS server 注释行后面的内容。要依照具体情况改一些配置:

  1. listen 后的数字为端口号,也就是接受HTTPS请求的端口。ssl 这个单词别给删了。
    由于 Cloudreve 的默认端口是5212,如果你没有改过这个端口,那么我建议就直接使用5213端口做HTTPS的端口好了。也可以改成你自己喜欢的端口号,别与其他软件存在可能的冲突就好了。
  2. ssl_certificatessl_certificate_key 后的文件名就是刚刚证书生成的时候最终的结果里的两个文件,一个是 key(私钥),一个是 certificate(证书)。最后还要把刚刚生成的两个文件拷贝到这个ngnix.conf配置文件同一文件夹里。(我会在后面再提示你一遍的)
  3. location / 后的大括号内的内容:
    proxy_pass 表明是转发请求,后面是你本地部署的 Cloudreve 的访问地址,由于是本地,所以可以是 http://127.0.0.1:5212,也可以是 http://localhost:5212
    如果你更改过 Cloudreve 的运行端口,那么此处请对应更改端口号。
    此处为http,不是https,请注意检查。

改完 nginx.conf 文件之后,保存它,然后 server.pemserver.crt 两个文件拷贝到这个conf文件同文件夹下 (否则启动时会提示找不到证书文件)。

最后,在nginx可执行文件的目录下运行

nginx.exe -s reload

来重新加载配置文件。

让我们打开浏览器,访问:https://localhost:5213 (此时提示不受信任证书是正常现象,点接受风险并继续访问即可)

如果可以正常访问到 Cloudreve,那么恭喜你,已经要成功了。

接下来我们的工作就要转到想要用WebDAV连接到 Cloudreve 服务器的另外的电脑上面了。
在把屁股从椅子上挪开之前,还有一件事情,请 my_root.crt文件通过任何你喜欢的方式传到其他需要访问 Cloudreve 的电脑上,因为在这些电脑上还需要这个文件。

信任证书,并成功使用 WebDAV 连接到 Cloudreve !

下面的操作都将要在想要通过 WebDAV 连接至 Cloudreve 的电脑上进行(Windows系统)。

首先,相信你在这个电脑上已经有刚刚在证书创建过程中获得的 my_root.crt 文件了。(请注意,不是server.crt

双击这个文件,这时会弹出一个证书导入向导,里面可以看到你刚刚在证书创建过程中输入的一些文字,还说这个证书不受信任blablabla… 完全不用担心,这个证书是我们刚刚自己创建的,电脑还不咋认识它,现在我们要做的就是要让电脑相信这个我们自己创建的玩意儿。

点击“安装证书”,并将这个证书安装到“受信任的根证书”位置:
在这里插入图片描述
安装完成即可。

此时再打开浏览器去通过https访问 Cloudreve 服务器,浏览器应该不会再提示“不受信任的证书”的错误了。

最后就是按照 Cloudreve 的官方教程,打开“此电脑“,映射网络驱动器,添加位置为 https://www.abcde.net:5213/dav 即可!

恭喜你,你已经成功了。

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。