威联通(qnap)使用acme申请并部署泛域名证书
前言
最近又重黑群晖换到qnap了 (反复横跳。。。本来想搞黑威的,结果写conf太麻烦,就暂时没动),就想着先把ssl证书也一并弄过来
其实qnap自带letsencrypt申请程序,可惜只能在非国内区域使用 (控制台的申请国内貌似可以,不过需要80或443端口开放)
于是就想着还是通过acme.sh来尝试申请获取,经过一番折腾,基本实现了我的目标,这里发出和大家来交流下
提前说明下,我尝试了好久,发现基本不可能像群晖那样不操作ssh来实现,所以基于qnap的是需要执行一些简单的操作的,希望各位对这一点至少有一些了解
本次还是使用acme.sh工具
如果你熟悉acme.sh,最简单的方式就是自己安装acme.sh的脚本,然后官方其实已经为qnap提供了安装方式
大概流程就是 安装 acme.sh--> 设置环境变量 --> 获取安装证书 --> 添加到定时任务自动获取
关于qnap的证书
qnap的默认证书存储位置是 /etc/stunnel/
其中 stunnel.pem 是证书和私钥二合一的证书,实际上就是把cert和key的数据拼接生成的
backup.cert 和 backup.key 是原始证书和私钥的备份,这三个实际都是文本文件
安装docker
实际上安装acme.sh然后申请还是比较方便的
但是我不喜欢在系统中乱搞。。。(强迫症?)
又加上我想尝试下能不能像群晖那样完全通过页面操作或者尽可能减少shell操作,所以还是准备用docker实现下(当然后来发现还是必须用到sshell )
实际上就是把安装在本机的acme使用docker来实现,尽量不去对系统文件进行修改
建议操作前先将系统默认的证书下载备份下
虽然不备份也能恢复,不过会稍微麻烦点
首先为acme单独创建共享文件夹,方便后续操作
然后在acme中创建名为docker的文件夹,方便存储acme的docker的数据,名字随意,与后面docker中的映射文件夹对应即可
从container中拉取acme镜像
选择 neilpang/acme.sh安装
下载完成后 创建docker
注意名称需要与后面脚本里一致,建议写一样的,避免后面出问题
命令处填写daemon 以守护方式运行
打开高级设置
添加对应的dns服务提供商的key和secret
如图我的是阿里的
如果是dnspond就是DP_Id 和 DP_Key,具体还有一些(未测试),可以自己去官网查找然后测试
根据自己需求选择
网络选择host
挂载需要的文件夹
这里的/acme/docker就是开始创建的空文件夹,挂载到/acme.sh,注意删除上面默认添加的存储空间映射
使用脚本
下载脚本update_cert_docker.sh,度娘 /1JCY61qinDxGtLYHzOmb5gQ?pwd=cj4r 提取码: cj4r
内容如下
脚本基于之前的群晖改造的,大概流程就是调用我们刚装好的acme.sh的docker,执行获取与安装命令,把获得到的证书放在临时目录中,然后将证书文件复制拼接到qnap的证书目录,最后重启相关服务
将脚本文件update_cert_docker.sh拷贝acme文件夹
把执行权限勾上
权限添加后重新查看下,qnap的页面可能会修改权限出bug不生效,重试就行
后面就需要shell里进行操作
首先开启ssh及admin账户
Shell进入qnap服务
进入时会提示
q 退出
y 确认
使用admin登陆默认进去是/root
切换到 /share/acme(qnap所有的共享文件夹都挂载在/share 下,acme就是最开始我们创建的共享文件夹)
查看下
可以看到我们创建的docker文件夹及update_cert_docker.sh 脚本文件,且文件名带*,应该是可执行的标记
可以手动 ./update_cert_docker.sh 执行脚本
会在显示执行记录,同时在当前文件夹会生成update_cert_docker.log 记录文件
执行成功后会在目录下生成cert-up-docker.log日志,可查看执行情况
同时在docker文件夹内会有相应的acme的执行日志,可供排查
如果顺利的话就可以去控制台看到证书已经被替换了,这就代表脚本配置没问题
至于为什么状态还是默认证书我还没弄清楚 。。估计某个地方需要配置。。不过不影响使用
这时候想要恢复原证书就需要之前备份的默认证书,选择取代当前证书--> 恢复默认证书即可
如果出现异常就需要查看日志文件,修改对应的配置
定时更新证书
最后使用定时任务,qnap需要手动添加执行 (话说为啥不像群晖一样提供一个页面的操作入口 )
这里根据qnap自己的wiki https://wiki.qnap.com/wiki/Add_items_to_crontab
在大多数桌面版Linux 中会使用 crontab -e 来编辑crontab 配置,但是注意不要在威联通中使用这种方法,威联通在重启的时候会覆盖使用这种方式写入的配置。
如果想要永久的保存配置,应该使用
echo "0 1 1 * * /share/acme/update_cert_docker.sh > /share/acme/update_cert_docker.log& " >> /etc/config/crontab
或者 vim 修改vim /etc/config/crontab
自行插入 0 1 1 * * /share/acme/update_cert_docker.sh >/share/acme/update_cert_docker.log & 也行
这句话前面的0 1 1 * * 为定时参数,分别代表 分 小时 日 月 周,0 1 1 * * 表示每月1日1点
后面就是执行的脚本,注意和0 1 1 * * 中间有空格,/share/acme/update_cert_docker.sh这个我们下载上传到nas的脚本(这里是脚本的绝对位置,一般情况下放在共享文件夹只需要添加/share就行,其他位置需要自己查看),然后在脚本所在位置生成日志/share/acme/update_cert_docker.log
后面有 & (注意与前面有空格) 表示后台执行
如图
我为了测试修改了下定时的时间,所以定时参数不一样,可以根据需要自己修改
然后应用crontab
crontab/etc/config/crontab && /etc/init.d/crond.sh restart
成功后可以执行crontab -l
可以看到配置已生效
测试成功后可以关闭ssh和admin账号
总结
相对于群晖,qnap来说操作稍微复杂了点,需要一点linux的基础知识
其实我也不理解qnap的脑回路。。修改定时任务需要进shell、修改自启也要进shell、
网页反应慢(5.0稍微好点了)、某些UI暴丑、资料少、翻译烂、大部分还是英文。。。。。。。
感觉影响体验的有一大堆
但为什么又转回来呢,因为便宜啊 ,功能也比较全,折腾下也比较有意思
我现在搞的是一个212p3,arm的低端机器,主要是跑一些照片、同步服务,主数据还是在truenas上
通过filestation内网挂载
相当于买一个qnap的软件服务吧
灵KOYB
校验提示文案
迷糊的
校验提示文案
digie
校验提示文案
digie
校验提示文案
digie
校验提示文案
风筝被盗
校验提示文案
mail
校验提示文案
水手shuishou
校验提示文案
水手shuishou
校验提示文案
自得与否
校验提示文案
naoki66
导入后状态就不是默认证书了,但是我没权限下载下来,不知道他们是怎么实现的
校验提示文案
CapybaraO
校验提示文案
爱折腾的暮色
You don't specify aliyun api key and secret yet.
校验提示文案
冶哥吉祥
校验提示文案
风筝被盗
校验提示文案
冶哥吉祥
校验提示文案
爱折腾的暮色
You don't specify aliyun api key and secret yet.
校验提示文案
CapybaraO
校验提示文案
naoki66
导入后状态就不是默认证书了,但是我没权限下载下来,不知道他们是怎么实现的
校验提示文案
digie
校验提示文案
自得与否
校验提示文案
digie
校验提示文案
digie
校验提示文案
水手shuishou
校验提示文案
水手shuishou
校验提示文案
mail
校验提示文案
迷糊的
校验提示文案
灵KOYB
校验提示文案