跳转到内容

Web 界面安全:HTTPS、端口与自动注销 ​

完成后,Web 界面走 HTTPS,密码和会话不再在局域网里明文传输;端口按你的需要避开容器;闲置的管理会话会自动退出。

开始之前 ​

  • 需要一张 SSL 证书。先在 系统 → 证书 → SSL(System → Certificates → SSL)创建或导入,见证书:自签名、导入与 Let's Encrypt,创建后点应用。
  • 记下 NAS 当前的 IP 地址。
  • 确认你能在本机控制台登录:接显示器和键盘,或者用虚拟机平台的 Console。改端口和 HTTPS 出错时,要靠它救回来。

改端口和 HTTPS 会打断 Web 界面

  • 影响范围:只影响 Web 管理界面(nginx)。SMB、SSH、容器等服务不受影响。点应用后 Web 服务器会重启,页面可能弹出错误提示,官方文档说这些提示可以忽略;改了端口或开了 HTTPS 之后,当前浏览器标签会连不上,要换成新地址。
  • 前置条件:已有可用的证书;能在控制台登录;知道 NAS 的 IP。
  • 怎么回退:新地址还能进界面,就在同一页改回去并应用。进不去,就在控制台或 root 的 SSH 里运行 omv-firstaid,见下文「改坏了怎么办」。

设置在哪里 ​

系统 → 工作台 → 设置(System → Workbench → Settings):

字段默认值说明
端口(Port,上面那个)80HTTP 端口
自动注销(Automatic logout)5 分钟闲置多久后关闭会话,可选禁用、1 到 60 分钟、1 天
安全连接(Secure connection)分组里的 已启用SSL/TLS(SSL/TLS enabled)关打开后才能选证书
证书(Certificate)空来自 系统 → 证书 → SSL,启用 SSL/TLS 时必填
端口(Port,安全连接分组里那个)443HTTPS 端口,不能与 HTTP 端口相同,否则界面提示「HTTP 与 HTTPS 端口必须不相同」
强制使用 SSL/TLS(Force SSL/TLS)关只允许加密连接,HTTP 请求会被重定向

默认值来自全新安装的配置模板和表单源码,以你界面上显示的为准。保存后点页面顶部黄色提示条上的应用才会生效。

启用 HTTPS ​

分两步走,第一步先不要勾「强制使用 SSL/TLS」:

  1. 勾选 已启用SSL/TLS,在证书里选刚建好的证书,HTTPS 端口保持 443,点保存,再点黄色提示条上的应用。
  2. 用 https://<NAS 的 IP> 打开界面。自签名证书会触发浏览器警告(正常,原因见证书),继续访问并登录,确认 HTTPS 能用。
  3. 确认没问题后,回到这一页勾选强制使用 SSL/TLS,保存并应用。之后访问 http:// 地址会被 301 重定向到 https://<主机>:<HTTPS 端口>。

先开 HTTPS、验证、再强制,是因为一旦强制,所有 HTTP 访问都会被重定向到 HTTPS。要是 HTTPS 其实连不上(端口被防火墙挡了、客户端不接受证书),你连 HTTP 这条回头路也没有了。

勾选「强制使用 SSL/TLS」后,OMV 的 nginx 还会做两件事(来自 Salt 模板):给会话 Cookie 加上 secure 标记,以及发送 HSTS 头(max-age=15768000; includeSubDomains,约半年)。

HSTS 的副作用

HSTS 告诉浏览器:这个主机名以后只用 HTTPS。之后即使你把 OMV 改回 HTTP,用主机名(例如 nas.local)访问的浏览器仍会强行走 HTTPS,直到记录过期。用 IP 地址访问不受影响,因为浏览器只对域名记录 HSTS。想回退时,换 IP 访问。

OMV 的 nginx 默认只开 TLS 1.2 和 TLS 1.3。

改端口,给容器让路 ​

OMV 默认占用 80 和 443。Nginx Proxy Manager、Traefik、Caddy 这类反向代理容器也要这两个端口,所以得先把 OMV 的让出来。omv-extras wiki 的做法是把 OMV 改到别的端口(例如 HTTP 8888、HTTPS 8443),应用后用新端口访问。

  1. 在 系统 → 工作台 → 设置 把 HTTP 的端口改成 8888;如果已启用 SSL/TLS,把 HTTPS 的端口改成 8443。保存并应用。
  2. 用 http://<NAS 的 IP>:8888(或 https://<NAS 的 IP>:8443)重新打开界面,确认能登录。
  3. 确认之后,再启动要占 80 和 443 的容器。

顺序不能反。容器先占了 80,OMV 的 nginx 就会因为端口被占用而起不来,Web 界面也就没了,只能靠 omv-firstaid 救。

书签、监控、Homepage 条目、反向代理的上游地址、防火墙规则里写了旧端口的,都要同步改。反向代理的做法见反向代理与 HTTPS。

只让 Web 界面监听指定地址

OMV 没有「只监听某块网卡」的界面选项。多网卡机器想限制,可以用环境变量 OMV_NGINX_SITE_WEBGUI_LISTEN_IPV4_ADDRESS(默认 *),见环境变量。更常见的做法是用路由器或防火墙限制来源。

自动注销 ​

默认 5 分钟。omv-extras wiki 建议配置期间先调长,免得操作到一半被踢出。建议:

  • 配置期间设 30 分钟左右,配完改回 5 到 15 分钟。
  • 不要选禁用。浏览器忘了关,或者别人用你的电脑,就能直接操作 NAS。

会话还有两条规则(来自源码):

  • 会话绑定登录时的 IP 地址和浏览器 User-Agent,任何一项变了就判定会话无效,需要重新登录。所以 Wi-Fi 切到手机热点、VPN 重连后会被踢出;经反向代理访问时,OMV 看到的是代理的 IP。
  • 8.5.10 起 PHP 会话文件放在内存目录 /run/openmediavault/sessions。升级并应用配置之后,所有人要重新登录一次。

改坏了怎么办 ​

在 OMV 的本机控制台(或 root 的 SSH)运行:

sh
# 在 OMV 的 shell 里,以 root 身份
omv-firstaid

选 Configure workbench(配置 Web 管理界面)。它会依次问:

  1. HTTP 端口(默认 80)。
  2. 如果系统里已有 SSL 证书,问是否启用 HTTPS。回答「否」就回到纯 HTTP;回答「是」会继续问 HTTPS 端口、让你选证书,并问是否只允许 HTTPS(默认「否」)。
  3. 随后写入新设置并自动应用,最后列出可用的访问地址。

注意:这个工具会把自动注销重设成 5 分钟。

检查结果 ​

  1. 浏览器打开 https://<NAS 的 IP>(改过端口则带上端口),能看到登录页。自签名证书会有警告,换成可信证书后警告消失。
  2. 启用了强制 HTTPS 时,访问 http://<NAS 的 IP> 应被跳转到 HTTPS。
  3. 在 OMV 的 shell 里确认 nginx 在监听预期的端口:
sh
# 在 OMV 的 shell 里,以 root 身份,只读
ss -tlnp | grep nginx
  1. 想看响应头,可在客户端电脑上执行(-k 表示不校验证书,只用于测试自签名证书):
sh
# 在客户端电脑上
curl -kI https://<NAS 的 IP>

强制 HTTPS 生效时,返回头里应有 strict-transport-security。

常见问题 ​

改完端口,页面一片空白或报错。 点应用时 nginx 会重启,等几秒,用新地址重新打开。一直不行,用 omv-firstaid 回退。仍然打不开,见Web 界面打不开和502 Bad Gateway。

浏览器说证书不安全。 自签名证书没有被任何机构担保,这是预期行为。局域网内自用,可以核对证书指纹后在每台设备上手动信任一次;需要正规证书,见证书。

容器要占 80 和 443,OMV 的界面进不去了。 说明容器先于 OMV 改端口启动了。用 omv-firstaid 把 OMV 的端口改到别处,再重启容器。

经反向代理访问后,总是被要求重新登录。 会话绑定了来源 IP。代理的出口地址变化,或者你同时从代理和直连两种方式访问,都会触发。固定一种访问方式。

参考资料 ​

  • OMV 文档:工作台。
  • OMV 源码:工作台设置表单 workbench-settings-form-page.component.ts,nginx 站点模板 site-webgui.j2,omv-firstaid 的 20configure_webgui.py。
  • omv-extras wiki:Docker in OMV 8 中关于 Nginx Proxy Manager 与端口的说明。

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。