当前位置: 首页 > news >正文

使用ACME给动态域名下的Synology NAS免费申请SSL证书(无需开放80/443端口)

如何在Synology NAS上免费申请SSL证书(无需开放80/443端口)

前言:为什么需要SSL证书?

在当今互联网环境中,数据安全至关重要。SSL证书(现多称为TLS证书)能够:

  1. 加密客户端与服务器之间的通信
  2. 验证网站真实性,防止中间人攻击
  3. 提升搜索引擎排名(Google明确表示HTTPS是排名因素之一)
  4. 避免浏览器显示"不安全"警告,打开麻烦

一、准备工作

(阿里、腾讯那些厂商,SSL证书都是收费的,还是按年。大冤种啊。。。)

1.1 硬件和网络要求

  • 一台运行DSM 6.0或更高版本的Synology NAS
  • 稳定的网络连接(建议有线连接)
  • 建议NAS配置静态IP地址

1.2 软件准备

  • 启用NAS的SSH服务:
    1. 控制面板 > 终端机和SNMP
    2. 勾选"启用SSH服务"
    3. 建议修改默认端口(22改为其他端口如2222)

1.3 域名准备

  • 已注册的域名
  • 域名解析权限
  • 建议提前将域名解析指向NAS的IP地址(A记录)

二、安装acme.sh

随便怎么安装,下载包进行安装即可。

ssh admin@your-nas-ip -p 2222
sudo su -
synopkg update
synopkg install bash curl tar
mkdir -p /usr/local/share/acme.sh
cd /usr/local/share
wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
tar xvf master.tar.gz
cd acme.sh-master/
./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "your@email.com"
source ~/.profile

三、DNS API配置

Cloudflare配置示例(也可使用aliyun,查阅acme.sh官方)

echo 'export CF_Token="your_api_token"' >> /etc/profile
echo 'export CF_Email="your@email.com"' >> /etc/profile
source /etc/profile

四、证书申请

cd /usr/local/share/acme.sh
export CERT_DOMAIN="nas.yourdomain.com"
export CERT_DNS="dns_cf"
./acme.sh --issue --home . -d "$CERT_DOMAIN" --dns "$CERT_DNS" --keylength ec-256

五、证书部署

export SYNO_Username='admin'
export SYNO_Password='your-password'
export SYNO_Certificate=""
./acme.sh --deploy --home . -d "$CERT_DOMAIN" --deploy-hook synology_dsm

六、自动续期配置

  1. 控制面板 > 任务计划
  2. 新增 > 计划的任务 > 用户定义的脚本
  3. 配置:
    • 常规:名称"SSL自动续期",用户root
    • 计划:每周日3:00
    • 任务设置:
      #!/bin/bash
      /usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh/ >> /var/log/acme-renew.log 2>&1
      

七、故障排查

常见问题

  1. API连接失败

    • 检查DNS服务商API限制
    • 尝试添加--debug 2参数
  2. 部署失败

    export SYNO_Debug=1
    ./acme.sh --deploy ... 2>&1 | tee deploy.log
    

结语

通过本文介绍的方法,您可以:
✅ 完全免费获取可信SSL证书
✅ 避免开放80/443端口的安全风险
✅ 支持多域名和子域名,直接用*通配符
✅ 实现全自动续期
✅ SSL证书想不掏钱,就用这个来实现。

---------------------------------干货在这 --------------------------------------------

补录实操

以上是基本的流程和操作。以下是我基于阿里云域名的脚本,仅供参考:

1. 下载包并安装(github上下载即可)

特别注意,下载后的包文件名是acme.sh,执行文件在./acme.sh/acme.sh

# 下载
git clone https://github.com/acmesh-official/acme.sh.git
# 安装,前面那个是执行文件,一般在./acme.sh/acme.sh
./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "email@gmail.com"

2. 申请创建证书(需要aliyun的授权key来操作域名设置)

#!/bin/bash
export Ali_Key="LTAI5tP45YCLyramT"
export Ali_Secret="hMIRtFln9niu4eci"
export CERT_DOMAIN="funbox.cn"
export CERT_DOMAINS="*.funbox.cn"
/usr/local/share/acme.sh/acme.sh --issue --force --keylength 2048 --dns dns_ali --server letsencrypt --home . --keylength 2048 -d "$CERT_DOMAIN" -d "$CERT_DOMAINS"

输出截图示例:
在这里插入图片描述

3. 把生成的证书导入到群辉nas(注意https端口和是否使用insecure)

#!/bin/bash
export CERT_DOMAIN="funcbox.cn"
export CERT_DOMAINS="*.funcbox.cn"
export SYNO_USE_TEMP_ADMIN=1
export SYNO_SCHEME="https"
export SYNO_PORT="5001"
/usr/local/share/acme.sh/acme.sh --deploy --insecure --home . -d "$CERT_DOMAIN" -d "$CERT_DOMAINS" --deploy-hook synology_dsm

4. 设置定时任务脚本

就是定时执行更新,设置–home为证书位置。
在这里插入图片描述

相关文章:

  • 终端运行java出现???
  • Java基本概念
  • Veo 2:Gemini API赋能的革命性视频生成工具,重新定义动态内容创作——从逼真物理模拟到精细镜头控制,开发者的新一代视频生成利器
  • Vuex 和 Pinia 的区别
  • 【版本控制】SVN + TortoiseSVN版本管理实用教程(附安装+开发常用操作)
  • C语言基础语法详解:从入门到掌握
  • Object.defineProperty 与 Proxy解析
  • Python Cookbook-6.9 快速复制对象
  • 为什么vue的key值,不用index?
  • 文件传输过滤器绕过:Exe2Hex
  • 【资料推荐】LVDS Owner’s Manual
  • pcd2pgm的launch文件实现
  • [C]基础13.深入理解指针(5)
  • 第18章:MCP在创作领域中的应用
  • 表示学习与部分域适应
  • 第19章:Multi-Agent多智能体系统介绍
  • “IAmMusicFont.com“:将音乐变成视觉
  • 14.ArkUI Radio的介绍和使用
  • CSS Position 属性完全指南
  • 高精度运算
  • 当代视角全新演绎,《风雪夜归人》重归首都剧场
  • 贵州通报9起群众身边不正之风和腐败问题典型案例
  • 沈阳市委常委马原出任阜新市委副书记、市政府党组书记
  • 封江晚开江早,东北地区主要江河上一冰封期冰层较常年偏薄
  • 人民日报首推“大地书单”,10本好书上榜!
  • 国防部发布、中国军号及多家央媒官博发祝福海报:人民海军76岁生日快乐