OMV通过acme工具添加let’s encrypt的SSL证书并自动续期


最近给NAS相关的服务都添加了Let's Encrypt的证书,以实现https安全访问。

威联通NAS可以用自带的myqnapcloud云服务自动获取Let's Encrypt证书并自动续期,群辉则使用syno-acme脚本来获取证书并自动续期(参考:http://www.up4dev.com/2018/05/29/synology-ssl-wildcard-cert-update/)。

OMV自带的Let's Encrypt插件需要服务器的80端口可以访问才能获取证书,在我大天朝封杀80端口的情况下无法使用,只能使用DNS方式验证域名所有权,于是研究了一下手动安装acme.sh工具来获取Let's Encrypt证书,网上似乎没有类似的教程。

acme.sh工具的中文说明见:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

首先通过SSH使用root用户连到OMV主机上,安装acme.sh工具:

wget -O - https://get.acme.sh | sh

安装完成后会在root目录创建.acme.sh目录,里面是工具相关的文件。同时会创建一个计划任务来自动续期证书,可以使用crontab -l命令来查看创建的计划任务:

因为我的域名是托管在DNSPOD,使用DNSPOD的ID和KEY来让 acme.sh工具 自动设置DNS解析并获取证书:

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_dp -d iwan.ga -d '*.iwan.ga'

然后把证书安装到某个位置,我这里安装到了
/etc/letsencrypt/live/iwan.ga/ 这个目录,之后需要让nginx从这个目录加载证书文件

acme.sh --installcert -d iwan.ga \
--key-file /etc/letsencrypt/live/iwan.ga/privkey.pem \
--fullchain-file /etc/letsencrypt/live/iwan.ga/fullchain.pem \
--reloadcmd "service nginx force-reload"

下面要先开启OMV的https支持,在OMV的webui中,依次进入“证书 > SSL > 添加(选择导入)”,然后把获取到的私钥和证书的文本内容复制进两个输入框中。

然后到“常规设置”中,开启https,并选中添加的证书。

到这里虽然就已经可以使用https正常访问OMV的webui了,但是导入的这个证书是写死的,等三个月证书过期之后就不能用了,所以需要修改nginx设置,让nginx读取之前安装到 /etc/letsencrypt/live/iwan.ga/ 目录的证书,这样 acme.sh工具的计划任务在自动更新证书之后,会重启nginx服务,使用新的证书。

OMV的nginx设置在/etc/nginx/sites-enabled/openmediavault-webgui 文件,编辑它:

vi /etc/nginx/sites-enabled/openmediavault-webgui

可以看到这个文件里面的SSL相关设置,默认的私钥和证书的路径是从OMV导入的私钥和证书,修改为之前安装到 /etc/letsencrypt/live/iwan.ga/ 目录的私钥和证书的路径。

最后运行 nginx -t 验证一下修改的有没有问题,没有问题的话,运行 systemctl reload nginx 重启一下 nginx 服务,就全部完成了。 60天之后 acme.sh工具的计划任务会自动更新证书,nginx应该也会使用新的证书。

注意:如果在OMV的webui修改web管理员设置,可能会导致 openmediavault-webgui 文件变回OMV的设置,这样就又需要修改一下私钥和证书的路径。

声明:爱玩咖 – 生命在于折腾|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - OMV通过acme工具添加let’s encrypt的SSL证书并自动续期


Carpe Diem and Do what I like