当前位置:首页 » 《休闲阅读》 » 正文

使用 Nginx 搭建 Webdav 服务

26 人参与  2024年12月01日 08:01  分类 : 《休闲阅读》  评论

点击全文阅读


使用 Nginx 搭建 Webdav 服务

一、 自签名根证书

1. 生成根证书密钥

openssl genrsa -out ./root.key 2048

2. 生成根证书

openssl req -x509 -new -key ./root.key -out ./root.pem -days 365交互信息Country Name (2 letter code) []:CNState or Province Name (full name) []:HeNanLocality Name (eg, city) []:HZGOrganization Name (eg, company) []:www.hzg.comOrganizational Unit Name (eg, section) []:HZGCommon Name (eg, fully qualified host name) []:HZGEmail Address []:123456789@qq.com

二、生成应用证书

1. 生成应用证书密钥

openssl genrsa -out webdav.key 2048

2. 生成应用证书请求

openssl req -new -key webdav.key -out webdav.csr

3. 创建证书附加用途文件

基于域名的证书
这里解决的问题是浏览器访问网页验证证书域名的问题,保存为 webdav.ext 文件,生成证书的时候使用

基于域名的证书keyUsage = nonRepudiation, digitalSignature, keyEnciphermentextendedKeyUsage = serverAuth, clientAuthsubjectAltName=@SubjectAlternativeName[ SubjectAlternativeName ]DNS.1=hzgwebdav.comDNS.2=*.hzgwebdav.com
基于IP的证书keyUsage = nonRepudiation, digitalSignature, keyEnciphermentextendedKeyUsage = serverAuth, clientAuthsubjectAltName=@SubjectAlternativeName[ SubjectAlternativeName ]IP.1=192.168.0.1IP.2=192.168.0.2

4. 签发证书

openssl x509 -req -in webdav.csr -CA root.pem -CAkey root.key -CAcreateserial -out webdav.crt -days 365 -sha256 -extfile webdav.ext

三、Nginx 部署 Webdav 服务

1. 生成 Webdav 用户密码文件

echo hzg:$(openssl passwd -crypt 12345678)>/path/certs/webdav/webdavpasswd

2. Nginx WebDav 配置

注意 Nginx 需要安装以下模块

nginx-dav-ext-modulengx_http_headers_module
dav_ext_lock_zone zone=davlock:10m;# Http 配置server {    listen 8080;    server_name hzgwebdav.com *.hzgwebdav.com;    location / {        root /path/webdav;        autoindex_localtime on;        set $dest $http_destination;        if (-d $request_filename) {                   # 对目录请求、对URI自动添加"/"            rewrite ^(.*[^/])$ $1/;            set $dest $dest/;        }        if ($request_method ~ (MOVE|COPY)) { # 对MOVE|COPY方法强制添加Destination请求头           more_set_input_headers 'Destination: $dest';        }        if ($request_method ~ MKCOL) {            rewrite ^(.*[^/])$ $1/ break;        }        client_body_temp_path /tmp;        dav_methods PUT DELETE MKCOL COPY MOVE;       # DAV支持的请求方法        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; # DAV扩展支持的请求方法        dav_ext_lock zone=davlock;                    # DAV扩展锁绑定的内存区域        create_full_put_path  on;                     # 启用创建目录支持        dav_access user:rw group:r all:r;             # 设置创建的文件及目录的访问权限        auth_basic "Authorized Users WebDAV";        auth_basic_user_file /path/certs/webdav/webdavpasswd;    }}# Https 配置server {    listen 443 ssl;    server_name hzgwebdav.com *.hzgwebdav.com;    autoindex on;    ssl_certificate "/path/certs/webdav/webdav.crt";    ssl_certificate_key "/path/certs/webdav/webdav.key";    ssl_protocols           SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 ;    ssl_prefer_server_ciphers on;    ssl_ciphers               ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;    ssl_session_cache         shared:SSL:10m;    ssl_session_tickets       off;    ssl_stapling              off;    location / {        root /path/webdav;        autoindex_localtime on;        set $dest $http_destination;        if (-d $request_filename) {                   # 对目录请求、对URI自动添加"/"            rewrite ^(.*[^/])$ $1/;            set $dest $dest/;        }        if ($request_method ~ (MOVE|COPY)) { # 对MOVE|COPY方法强制添加Destination请求头           more_set_input_headers 'Destination: $dest';        }        if ($request_method ~ MKCOL) {            rewrite ^(.*[^/])$ $1/ break;        }        client_body_temp_path /tmp;        dav_methods PUT DELETE MKCOL COPY MOVE;       # DAV支持的请求方法        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK; # DAV扩展支持的请求方法        dav_ext_lock zone=davlock;                    # DAV扩展锁绑定的内存区域        create_full_put_path  on;                     # 启用创建目录支持        dav_access user:rw group:r all:r;             # 设置创建的文件及目录的访问权限        auth_basic "Authorized Users WebDAV";        auth_basic_user_file /path/certs/webdav/webdavpasswd;    }}

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/194752.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1