群晖 docker 部署 acme.sh 自动申请域名证书,不用命令行
本帖最后由 stille 于 2020-3-13 10:20 编辑欢迎访问我的博客 www.ioiox.com
前言上文已经介绍了 acme.sh 的详细实践使用教程,网上关于群晖NAS上使用acme.sh来自动化申请和部署证书的相关文章已经有很多,由于群晖特殊的环境,只能通过 SSH 登陆到 Linux 环境使用命令来完成操作,对于新手可能并不友好.本文将详细介绍在群晖NAS的DSM 管理界面利用 docker 部署 acme.sh 服务来申请证书.
由于全自动化部署的整个流程不确定因素过多,所以本文仅针对申请步骤实现真正的一键申请.为保险起见还是手动导入证书.
acme.sh 是一款方便,强大的 Let's Encrypt 域名证书申请续签程序.支持一键脚本和 docker 部署.支持 http 和 DNS 两种域名验证方式,其中包括手动,自动 DNS 及 DNS alias 模式方便各种环境和需求.可同时申请合并多张单域名,泛域名证书,并自动续签证书和部署到项目.
本文为Stille原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.
部署简介整个部署流程非常简单,具体为以下三个步骤:
[*]准备 DNS API
[*]安装 acme.sh
[*]执行申请命令
本文以最常规的 DNS API 验证模式为例,其他方式请参考官方Wiki.
准备 DNS API通过使用域名服务商提供的 API 密钥,让acme.sh自动创建域名验证记录以申请域名证书. acme.sh 支持全球各种域名服务商的 API ,本文将以阿里云,腾讯云,Cloudflare为例.更多 DNS API 支持,请查看:官方dnsapi
阿里云
推荐使用子账户,并赋予子账户 DNS 权限,以确保安全性.
登陆阿里云控制台 - 访问控制 RAM - 用户管理
新建用户并勾选为该用户自动生成AccessKey
https://static.ioiox.com/usr/uploads/2020/03/3045514288.jpg
复制保存好生成的AccessKey信息
https://static.ioiox.com/usr/uploads/2020/03/3855719536.jpg
授权该用户,搜索DNS,并将AliyunDNSFullAccess移动至右侧确定.
https://static.ioiox.com/usr/uploads/2020/03/1939658513.jpg
根据官方dnsapi获取阿里云的API格式为:export Ali_Key="LTAI4Fd8J9qs4fxxxxxxxxxx"export Ali_Secret="Xp3Z7NDOW0CJcPLKoUwqxxxxxxxxxx"
腾讯云腾讯云的域名由dnspod.cn管理,登陆管理控制台,右上角选择密钥管理,创建密钥并复制保存好生成的ID和Token.
https://static.ioiox.com/usr/uploads/2020/03/3218835751.jpg
根据官方dnsapi获取DNSPod.cn的API格式为:export DP_Id="124xxx"export DP_Key="54ddaa41245837600ce713xxxxxxxxxx"
Cloudflare
Cloudflare 的 API 分为 global api key 全局 API 和创建 new api token ,网上各种教程都是使用全局 API .为确保安全,推荐创建 new api token 来使用.
登陆 Cloudflare 点域名进入,右侧有如下图 API 信息.首先复制保存Account ID.然后点击Get your API token.
https://static.ioiox.com/usr/uploads/2020/03/2595721593.jpg
点击Create Token创建新 API Token,具体参考如下:
其中 Zone Resources 选择你的 Cloudflare 账户邮箱
https://static.ioiox.com/usr/uploads/2020/03/2218702194.jpg
复制保存生成的API Token
https://static.ioiox.com/usr/uploads/2020/03/1557903647.jpg
根据官方dnsapi获取CloudFlare的Using the new cloudflare api token格式为:export CF_Token="PfCA6tyLxxxxxxxx-sS6ANgqzuVexxxxxxx"
export CF_Account_ID="1fs48ec7e2063cb70hacc3xxxxxxxxxx"
群晖 docker 部署群晖NAS的 docker 容器部署,支持以下两种方式:
[*]docker executable 执行模式
[*]docker daemon 守护模式
docker executable 执行模式
群晖NAS的 DSM 中以 docker executable 执行模式 创建 docker 容器,会在创建时根据执行命令来申请证书,并在证书申请完成后停止容器.
配置 DNS API手动创建account.conf文件.本文以/docker/acme目录为例.
https://static.ioiox.com/usr/uploads/2020/03/1627379978.jpg
根据上文获取的 API 格式,复制粘贴并保存.
实践过程中遇到自动生成的 AUTO_UPGRADE='1' 参数可能会导致 API 格式错误.建议手动加入.
export DP_Id="xxxxx"
export DP_Key="xxxxxxxxxxxxxxxxxxxx"
AUTO_UPGRADE='1'https://static.ioiox.com/usr/uploads/2020/03/4278311209.jpg
下载镜像启动容器群晖 docker 注册表中搜索acme.sh并下载latest最新版.
https://static.ioiox.com/usr/uploads/2020/03/1535670460.jpg
映像中启动容器
https://static.ioiox.com/usr/uploads/2020/03/1411502802.jpg
配置容器高级设置
https://static.ioiox.com/usr/uploads/2020/03/3400209572.jpg
卷
添加文件夹以挂载配置文件和证书输出目录,选择本文示例的docker/acme,装载路径为/acme.sh.
装载路径由镜像作者规定,不能修改,请直接复制粘贴.
https://static.ioiox.com/usr/uploads/2020/03/2407762448.jpg
网络
勾选使用与 Docker Host 相同的网络
https://static.ioiox.com/usr/uploads/2020/03/3849262329.jpg
**** Hidden Message *****
本帖最后由 sun8023 于 2020-3-13 10:24 编辑
感谢分享/////Let’s Encrypt支持吗
sun8023 发表于 2020-3-13 10:22
感谢分享/////Let’s Encrypt支持吗
就是let'encrypt stille 发表于 2020-3-13 10:25
就是let'encrypt
好的,原来用命令的,老是到期不自动,好像是重复没设置对,试试这个 sun8023 发表于 2020-3-13 10:47
好的,原来用命令的,老是到期不自动,好像是重复没设置对,试试这个
那你试试 守护模式 吧
执行模式是单次的,也不会续签 谢谢分享 需要 80 443端口么? 谢谢楼主分享 不会自动导入群晖呀 能申请泛域名证书吗 感谢分享了,太牛了 群晖 docker 部署 acme.sh 谢谢分享,试试 谢谢分享 https://www.up4dev.com/2018/05/29/synology-ssl-wildcard-cert-update/
这个更好,自动导入。 好东西一定要支持
感谢大佬分享!辛苦啦 感谢分享了,太牛了 感谢分享了,太牛了 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!