使用ACME给动态域名下的Synology NAS免费申请SSL证书(无需开放80/443端口)
如何在Synology NAS上免费申请SSL证书(无需开放80/443端口)
前言:为什么需要SSL证书?
在当今互联网环境中,数据安全至关重要。SSL证书(现多称为TLS证书)能够:
- 加密客户端与服务器之间的通信
- 验证网站真实性,防止中间人攻击
- 提升搜索引擎排名(Google明确表示HTTPS是排名因素之一)
- 避免浏览器显示"不安全"警告,打开麻烦
一、准备工作
(阿里、腾讯那些厂商,SSL证书都是收费的,还是按年。大冤种啊。。。)
1.1 硬件和网络要求
- 一台运行DSM 6.0或更高版本的Synology NAS
- 稳定的网络连接(建议有线连接)
- 建议NAS配置静态IP地址
1.2 软件准备
- 启用NAS的SSH服务:
- 控制面板 > 终端机和SNMP
- 勾选"启用SSH服务"
- 建议修改默认端口(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
六、自动续期配置
- 控制面板 > 任务计划
- 新增 > 计划的任务 > 用户定义的脚本
- 配置:
- 常规:名称"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
七、故障排查
常见问题
-
API连接失败:
- 检查DNS服务商API限制
- 尝试添加
--debug 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为证书位置。