外观
证书:自签名、导入与 Let's Encrypt
完成后,你能在 OMV 里准备好一张给 Web 界面(以及 FTP 等服务)用的 SSL 证书,知道浏览器为什么报警告,以及换证书的完整步骤。
证书在 OMV 里的位置
系统 → 证书(System → Certificates)下有两个页面:
| 页面 | 用途 |
|---|---|
| SSL | 给 系统 → 工作台(System → Workbench)里设置的 Web 界面、FTP 服务和部分插件做 HTTPS/TLS。本篇主要讲它 |
| SSH | SSH 密钥对,给 Rsync 客户端任务和部分插件做远端认证,不是登录 OMV 用的 |
OMV 把证书存在配置数据库里,应用配置时由 Salt 写成文件:证书在 /etc/ssl/certs/openmediavault-<UUID>.crt,私钥在 /etc/ssl/private/openmediavault-<UUID>.key(官方文档写的是 .cert,以 Salt 源码的 .crt 为准)。这些文件会被重新生成,不要手改。
创建自签名证书
- 进入
系统 → 证书 → SSL(System → Certificates → SSL),点工具栏的 新建 | 导入 菜单,选创建(Create)。 - 填写表单:
| 字段 | 默认值 | 说明 |
|---|---|---|
| 密钥长度(Key size) | 4096b | 只有 2048b 和 4096b 两个选项 |
| 有效时间(Period of validity) | 1 年(365 天) | 可选 1 天到 25 年。到期后浏览器会报错,所以要选长一点,或者记得换 |
| 通用名(Common Name) | NAS 的主机名 | 填你在浏览器地址栏里输入的名字或 IP。它会写进证书的 SAN:是 IP 就写成 IP 地址,否则写成 DNS 名称 |
| 组织名称、组织单位、城市、州/省、国家 | 空 | 可选,家用可以留空 |
| 空 | 填了会一并写进 SAN | |
| 标签(Tags) | 空 | 留空则自动用证书主题。下拉框里显示的就是它,建议写成有意义的名字,如 nas-webui |
- 点创建,再点黄色提示条上的应用,证书文件才会落盘。应用之前,
显示详情会报错,这是预期行为。
8.5.12 起,自签名证书按「叶子证书」创建:CA:FALSE,密钥用途为数字签名和密钥加密,扩展用途为服务器认证,并且不再允许创建小于 2048 位的 RSA 密钥。更早创建的证书不会被改写,想要新格式就重新创建。
通用名只能写一个
证书的 SAN 里只有你填的这一个名字。如果既用 nas.local 又用 IP 访问,只有其中一个能匹配,另一个仍然报警告。需要多个名字,就在别处用 OpenSSL 或 CA 生成带多个 SAN 的证书,再导入。
浏览器为什么报警告
自签名证书没有被任何机构担保,浏览器默认不信任它。局域网内自用的常见做法:
- 打开证书详情,把浏览器显示的指纹和 OMV 里的对一下:
显示详情里有 SHA-1 和 SHA-256 指纹,也可以在列表里把隐藏的指纹列打开。一致就继续访问,或者在每台设备上手动信任一次。 - 换成正规 CA 签发的证书,见下文。
怎么把证书加入系统或浏览器的信任列表,各平台做法不同,本站不展开。
导入已有证书
系统 → 证书 → SSL → 新建 | 导入 → 导入(Import):
| 字段 | 说明 |
|---|---|
| 私钥(Private key) | 粘贴 PEM 格式的 RSA 或 ECC 私钥(也可以选 .key、.pem 文件) |
| 证书(Certificate) | 粘贴 PEM 格式的证书。CA 签发的证书要连中间证书一起粘贴(常见文件名 fullchain.pem),否则部分客户端校验不过 |
| 标签(Tags) | 必填 |
OMV 会检查证书是否有效,以及私钥和证书是否匹配,不匹配会报错。导入后同样要应用。
私钥等于这台机器的身份,不要通过聊天工具或邮件传递,用完删除本地副本。
换证书:完整步骤
SSL 页面没有「编辑」按钮,换证书等于「导入新的、切换引用、删旧的」:
- 创建或导入新证书,应用。
- 进入
系统 → 工作台 → 设置(System → Workbench → Settings),把证书换成新证书,保存并应用。 - FTP 等其他引用了旧证书的服务也换掉。列表的引用(Referenced)列打勾,说明这张证书还在被使用。
- 旧证书的引用不再打勾后,才能选中它点删除。仍被引用时,删除按钮不可用,强行删除也会被后端拒绝。
Let's Encrypt(注意时效)
官方文档对 Let's Encrypt 只说了一句:把 fullchain.pem 和 privkey.pem 的内容分别粘贴进导入表单,不需要转换。OMV 8.5.12 的源码里没有任何 ACME 自动申请或续期的功能,所以在 OMV 上它是手动导入。
手动导入撑不住越来越短的有效期
按 Let's Encrypt 官方公告,截至 2026-10-23:默认证书有效期是 90 天;2027-02-10 起默认变成 64 天;2028-02-16 起变成 45 天。官方建议用自动化方式续期,并配上续期失败的监控,不要靠手动。而在 OMV 里续期要把上面的四步走一遍,每一两个月就得做一次,很难长期坚持。
实际可行的做法,按推荐顺序:
| 做法 | 适合 | 代价 |
|---|---|---|
| 保持自签名,只在局域网或 VPN 内访问 | 家用,没有域名 | 每台设备信任一次,或忍受警告 |
| 用反向代理容器(Nginx Proxy Manager、Caddy、Traefik)自动申请和续期证书,应用走它的 HTTPS | 有域名,要从外部访问某些应用 | 多一个容器;OMV 自己的管理界面不要经它暴露到公网,见远程访问 |
| 在别处申请,手动导入 OMV | 一定要让 OMV 界面带正规证书 | 每次续期都要手动操作 |
用 ACME 客户端申请时,如果不想在路由器上开放 80 或 443,可以改用 DNS 验证(DNS-01),具体以你所用客户端的文档为准。反向代理容器的搭法见反向代理与 HTTPS。
到期提醒
OMV 每天运行一次检查:/etc/ssl/certs/openmediavault-*.crt 里有证书在 7 天内到期时,发一封标题为 A SSL certificate expires in N days 的邮件。前提是已配置邮件通知(见配置邮件通知),且 系统 → 通知 → 事件(System → Notification → Events)里的杂项事件是开着的。7 天并不宽裕,自己在日历上提前设个提醒更稳。
SSH 页面
系统 → 证书 → SSH(System → Certificates → SSH)管理 SSH 密钥对:
- 创建或导入的密钥对存在配置数据库里,界面只显示公钥(点编辑可以看到),私钥不会出现在界面上。
- 公钥可以复制到远端服务器的
authorized_keys,列表上的安装按钮可以直接把它装到远端(要填主机名、端口、用户名和密码)。 - 它用在
服务 → Rsync → 任务(Services → Rsync → Tasks)的客户端认证,以及 ZFS 复制等插件功能里。登录 OMV 本机的 SSH 公钥不在这里,而在用户 → 用户(Users → Users)里每个用户的 SSH 公钥 字段,见 SSH 加固。
检查结果
系统 → 证书 → SSL列表里能看到新证书,应用之后点显示详情,核对主题、SAN 和有效期。- 在 OMV 的 shell 里确认文件已落盘,并读出有效期和 SAN:
sh
# 在 OMV 的 shell 里,以 root 身份,只读
ls /etc/ssl/certs/openmediavault-*.crt
openssl x509 -in /etc/ssl/certs/openmediavault-<UUID>.crt -noout -subject -dates -ext subjectAltName<UUID> 取自上一条命令列出的文件名。
- 在
系统 → 工作台 → 设置选中该证书并应用后,用https://<NAS 的 IP>访问,浏览器里查看的证书应与它一致。
常见问题
导入时提示 Private key does not correspond to the certificate。 私钥和证书不是一对,检查是不是粘贴错了文件,或者把旧私钥配了新证书。
导入时提示 Invalid certificate 或 Invalid private key。 内容不是有效的 PEM。确认以 -----BEGIN 开头,没有多余的空行或被邮件客户端改过的换行。
浏览器提示通用名不匹配(ERR_CERT_COMMON_NAME_INVALID)。 你访问用的名字或 IP 不在证书的 SAN 里。重新创建证书,通用名填你实际使用的那个。
换了证书,浏览器里还是旧的。 确认应用已经点过,并关闭所有打开着 OMV 的标签页后重新访问。
证书删不掉。 它还在被引用,先在引用它的服务里换成别的证书并应用。
参考资料
- OMV 文档:证书。
- Let's Encrypt:From 90 to 45 days(证书有效期缩短时间表)。
- OMV 源码:
certificatemgmt.inc(创建参数与校验)、ssl-certificate-form-page.component.ts(表单默认值)、certificates/ssl.sls(落盘路径)、openmediavault-check_ssl_cert_expiry(到期检查)。 - OMV 8.5.12 更新记录:自签名证书改为叶子证书,不再允许小于 2048 位的 RSA 密钥。