Unraid远程SSL加密访问,ACME实现自动续期申请和替换系统证书文件

2021-11-16 17:38:32 11点赞 87收藏 15评论

【写作说明】:补个坑,之前折腾完NAS,装Unraid系统,为了实现远程Https加密访问,使用Letsencrypt证书手动合成后替换到Unraid系统配置中,每3个月就要手动申请合成一次,实在麻烦。

最近折腾一些联想小主机,魔改BIOS和CPU,算是暂告一段,重新折腾下Unraid把自动证书申请续期和替换补坑,折腾好看到网上关于这个Unraid系统部署SSL远程访问和自动续期的教程很少,发出来给玩Unraid的小伙伴一个参考。

前两天看油管一个UP主各种吐槽Unraid,出个什么一篇就够了的视频,评论里被各种小伙伴怼,每个系统都有优缺点,自己喜欢就好,我买的正版Unraid,使用半年感觉还是不错的。

另外上篇关于联想M710Q/M910Q最新魔改BIOS及刷改教程,789代部分10代及魔改U的文章里,评论区有个小伙伴说发M710Q硬改增加M.2接口的,大家还在等着你的教程。

折腾理由

就是懒……

直达主题

前面废话够多了,直接开始

准备工作:

  1. 公网IP,路由器做好DDNS转发

  2. 阿里域名(或者其他域名自行变更)

  3. Unraid安装NginxProxyManager反向代理

  4. Unraid安装User Scripts脚本管理器

  5. 获取阿里账号的AccessKey

  6. Unraid管理权限设置

Unraid远程SSL加密访问,ACME实现自动续期申请和替换系统证书文件

开启代码模式,注意代码结构,空格不能取消,#位置为代码的解释,复制代码部分即可:

  • #创建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发代码有时候会乱掉,截图附上,注意代码结构,图片不知道看得清看不清,哎…

Unraid远程SSL加密访问,ACME实现自动续期申请和替换系统证书文件

Unraid远程SSL加密访问,ACME实现自动续期申请和替换系统证书文件

Unraid远程SSL加密访问,ACME实现自动续期申请和替换系统证书文件

我也不是专业的,对代码一知半解,以上汲取一些大佬的代码和经验,补充整合,有不正确的欢迎交流指正……

总结

根据自己的系统情况和路径自行变通,注意文件名称、路径一致性,系统SSL文件替换后管理权限中更新DNS就能看到证书有效期延长了,NginxProxyManager反向代理中如何设置我就不讲了,有很多教程。

年底有可能准备搬家了,最近带孩子折腾时间也少,搬过家之后再折腾一些智能家居,从家庭网络、智能控制系统、智能设备之类的折腾下。


展开 收起
15评论

  • 精彩
  • 最新
  • 三连支持分享经验

    校验提示文案

    提交
  • nice,我用nginxproxy给unraid做反代,能成功,但是会有很多图形内容显示不出来。不知道原生ssl怎么样。设置为unraid需要重启吗

    校验提示文案

    提交
    请问这个代码是添加在哪里

    校验提示文案

    提交
    advenced里的Custom Nginx Configuration下自定义添加

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 大佬跟着做了一半没教程了,就差ngix设置阿,你合并两个pem文件,但是ngix的SSL证书不是要key文件么,对不上阿

    校验提示文案

    提交
  • 直接用 nginx proxy manager 申请证书即可,证书到期会自动续期。只需建立 unraid 证书合并和替换的脚本定期运行。
    ```
    cd /mnt/user/appdata/nginx-proxy-manager/letsencrypt/npm-1/live && cat fullchain.pem privkey.pem> certificate_bundle.pem && mv -f ./certificate_bundle.pem /boot/config/ssl/certs/
    ```
    每个月1号0点0分执行 cron `0 0 1 * *`

    校验提示文案

    提交
    NPM没有443端口应该不能自动申请证书吧?

    校验提示文案

    提交
    官方作者说可以

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大佬npm页面添加证书文件是访问文件夹的形式,然后怎么自动延长,必须把证书文件下载在再添加到npm里面

    校验提示文案

    提交
  • 大佬申请证书后,在npm里面应该怎么操作

    校验提示文案

    提交
  • 我的是dnspod,申请下来的没有.cer这个文件,您们的都有吗?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
87
扫一下,分享更方便,购买更轻松