Unraid远程SSL加密访问,ACME实现自动续期申请和替换系统证书文件
【写作说明】:补个坑,之前折腾完NAS,装Unraid系统,为了实现远程Https加密访问,使用Letsencrypt证书手动合成后替换到Unraid系统配置中,每3个月就要手动申请合成一次,实在麻烦。
最近折腾一些联想小主机,魔改BIOS和CPU,算是暂告一段,重新折腾下Unraid把自动证书申请续期和替换补坑,折腾好看到网上关于这个Unraid系统部署SSL远程访问和自动续期的教程很少,发出来给玩Unraid的小伙伴一个参考。
前两天看油管一个UP主各种吐槽Unraid,出个什么一篇就够了的视频,评论里被各种小伙伴怼,每个系统都有优缺点,自己喜欢就好,我买的正版Unraid,使用半年感觉还是不错的。
另外上篇关于联想M710Q/M910Q最新魔改BIOS及刷改教程,789代部分10代及魔改U的文章里,评论区有个小伙伴说发M710Q硬改增加M.2接口的,大家还在等着你的教程。
折腾理由
就是懒……
直达主题
前面废话够多了,直接开始
准备工作:
公网IP,路由器做好DDNS转发
阿里域名(或者其他域名自行变更)
Unraid安装NginxProxyManager反向代理
Unraid安装User Scripts脚本管理器
获取阿里账号的AccessKey
Unraid管理权限设置
开启代码模式,注意代码结构,空格不能取消,#位置为代码的解释,复制代码部分即可:
#创建ACME.SH,可以先在你准备把证书文件放置的文件夹中创建一个ACME文件夹,黑体部分为我的ACME.SH位置,***号部分填入你自己阿里账号获取的AccessKey
docker run --rm -itd -v /mnt/user/appdata/ACME:/acme.sh -e Ali_Key=******** -e Ali_Secret=******** --net=host --entrypoint /bin/sh --name=acme.sh neilpang/acme.sh;
#更改默认证书为letsencrypt,目前ACME.SH默认的证书是zerossl
docker exec acme.sh --set-default-ca --server letsencrypt;
#申请证书,将你自己的域名替换掉123445.com
docker exec acme.sh --issue --dns dns_ali -d 12345.com -d *.12345.com --force;
#安装证书privkey.pem,fullchain.pem,其实就是将申请的证书文件12345.com中的.cer和.key输出为.pem到ACME文件夹中,12345.com同样更改为你自己的域名
docker exec acme.sh --install-cert -d 12345.com --key-file /acme.sh/privkey.pem --fullchain-file /acme.sh/fullchain.pem;
#进入ACME文件夹,因为需要将两个.pem合并一个Unraid系统需要的certificate_bundle.pem文件,所以我直接进入ACME文件夹中操作,这个certificate_bundle.pem替换自己的系统/boot/config/ssl/certs文件夹中需要替换的pem文件名称
cd /mnt/user/appdata/ACME/;
#合并Unraid SSL文件,将ullchain.pem和privkey.pem合并成一个Unraid系统需要的SSL文件,名称certificate_bundle.pem根据自己的文件名修改
cat fullchain.pem privkey.pem> certificate_bundle.pem;
#剪切替换Unraid SSL证书路径中的/boot/config/ssl/certs/certificate_bundle.pem文件(注意文件名一致性)
mv /mnt/user/appdata/ACME/certificate_bundle.pem /boot/config/ssl/certs;
#复制证书到NginxProxyManager,将导出的privkey.pem,fullchain.pem两个文件复制到NginxProxyManager中,注意变更自己的路径,npm-*选择你自己custom_ssl文件夹下的最大值,我的最大值文件夹是npm-9
cp -rf /mnt/user/appdata/ACME/*.pem /mnt/user/appdata/NginxProxyManager/custom_ssl/npm-9;
#重启NginxProxyManager
docker exec NginxProxyManager reboot
加粗的位置都是要修改的,有些路径可能也不用修改,还是一一检查的好,一共9行命令,使用User Scripts创建一个ACME或其他名称的脚本,将以上代码根据自己情况更改完成后填入到脚本中,设置* * * */2 *调用周期保存即可。
ZDM发代码有时候会乱掉,截图附上,注意代码结构,图片不知道看得清看不清,哎…
我也不是专业的,对代码一知半解,以上汲取一些大佬的代码和经验,补充整合,有不正确的欢迎交流指正……
总结
根据自己的系统情况和路径自行变通,注意文件名称、路径一致性,系统SSL文件替换后管理权限中更新DNS就能看到证书有效期延长了,NginxProxyManager反向代理中如何设置我就不讲了,有很多教程。
年底有可能准备搬家了,最近带孩子折腾时间也少,搬过家之后再折腾一些智能家居,从家庭网络、智能控制系统、智能设备之类的折腾下。
PS:文章来自网络,原文地址。