问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

创作时间:
作者:
@小白创作中心

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

引用
什么值得买
1.
https://post.smzdm.com/p/a0xl2g39/

ACME(自动证书管理环境)是一个互联网工程任务组维护的协议,它允许自动化 Web 服务器证书的部署,acme.sh是支持 ACME 协议流行的客户端之一,可以通过其实现SSL证书的自动申请、续期等。每次都要去申请SSL证书,对于很多小伙伴来说非常麻烦,特别是现在SSL证书开始要3个月申请一次,大家都觉得很不适应。本篇将为您介绍如何使用acme.sh自动申请SSL证书图文教程。

一、前置条件

  1. 黑群晖环境:已安装并正常运行的 DSM 系统。
  2. Docker 环境:在 DSM 系统中已安装 Docker 套件。
  3. Cloudflare 账号:拥有一个 Cloudflare 账号,并将域名托管在 Cloudflare。
  4. 域名解析:确保域名已正确解析到黑群晖的公网 IP 地址。
  5. 管理员权限:需要 DSM 管理员账号操作。

二、Cloudflare DNS API 准备

在使用 Cloudflare 的 DNS API 之前,需要获取 API 密钥(或 API 令牌)。

1. 获取 Global API Key(全局 API 密钥)

登录 Cloudflare 控制台。进入概览,在右侧向下滑动鼠标滚轮,滚到界面下方会看到区域ID账户ID、和获取您的API 令牌

  1. API 令牌区域,找到Global API Key,点击View查看密钥。
  2. 记录下这个密钥,区域ID、账户ID用于后续配置。

三、Docker 部署 acme.sh

1. 创建 acme.sh 容器

  1. 登录 DSM 管理界面,进入Docker套件。
  2. 点击注册表,搜索 acme.sh,选择官方或可信的版本(如 neilpang/acme.sh)。
  3. 下载镜像,等待完成。

2. 配置并运行容器

  1. 进入映像,找到刚刚下载的 acme.sh 镜像,点击启动
  2. 在弹出的窗口中,选择高级设置

高级设置配置:

  • (挂载目录):

  • 添加文件夹,挂载到 /acme.sh,用于存储证书。

  • DSM 文件夹路径:如 /docker/acme.sh。

  • 容器内路径:/acme.sh。

  • 环境变量

  • 添加以下环境变量,用于配置 Cloudflare API:

  • CF_Account_ID:cloudflare的账户id。

  • CF_Email:填写你的 Cloudflare 账号邮箱。

  • CF_Key:如果使用 Global API Key,则填写你的 Global API Key。

  • CF_Zone_ID:cloudflare的区域ID。

  • SYNO_DEVICE_ID:如果群晖开启了二次认证,需要设置这个环境变量,这个值需要F12打开开发者工具,然后随意从一个接口中的cookies字段获取,did的值就是device_id的值。

  • SYNO_DEVICE_NAME:如果群晖开启了二次认证,需要设置这个环境变量,默认为:CertRenewal

  1. 完成设置后,点击应用,启动容器。

四、上传sh脚本

1. 在群晖创建目录acme.sh

登录群晖,在任意一个目录下创建一个acme.sh的文件夹,用户上传生成和安装ssl的sh脚本。

2.本机修改下面脚本,然后上传到群晖的acme.sh的文件夹下

#!/bin/bash
# 域名
DOMAIN='xxxxxxx.xyz'
# DNS类型,dns_ali dns_dp dns_gd dns_aws dns_linode根据域名服务商而定,CloudFlare就是dns_cf
DNS='dns_cf'
# DNS API 生效等待时间 值(单位:秒),一般120即可
# 某些域名服务商的API生效时间较大,需要将这个值加大(比如900)
DNS_SLEEP=120
# 证书服务商,letsencrypt
CERT_SERVER='letsencrypt'

##--keylength 2048 表示生成rsa证书
generateCrtCommand="acme.sh --force --log --issue --server ${CERT_SERVER} --dns ${DNS} --dnssleep ${DNS_SLEEP} -d "${DOMAIN}" -d "*.${DOMAIN}" --keylength 2048"
installCrtCommand="acme.sh --debug 3 --output-insecure --deploy -d "${DOMAIN}" -d "*.${DOMAIN}" --deploy-hook synology_dsm"

docker exec acme-sh $generateCrtCommand
docker exec acme-sh $installCrtCommand

五、创建定时任务

1. 打开控制便面->任务管理

2、点击创建->定时任务->用户自定义脚本

3、输入任务名,用户最好用root。

4、设置运行频率,因为申请的证书3个月有效,可以设置每3个月运行一次,也可以设置每个月运行一次。

5、设置自定义脚本

bash /volume4/docker/acme.sh/cert.sh >> /volume4/docker/acme.sh/log.txt 2>&1

六、验证 HTTPS

  1. 打开浏览器,访问你的域名(如 https://yourdomain.com:端口)。
  2. 检查浏览器地址栏是否显示安全锁标志。
  3. 如果显示安全锁,说明 HTTPS 配置成功。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号