【Docker】搭建一个免费全自动申请和自动部署更新SSL证书的工具 - Certd
本文最后更新于 2024-09-20,文章可能存在过时内容,如有过时内容欢迎留言或者联系我进行反馈。
前言
本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版本为 7.2.1-69057 Update 5。本次演示如何配置自动申请证书,并部署到云主机指定目录。
简介
Certd是一个开源的自动化SSL证书管理工具,它可以帮助用户自动申请、更新和部署SSL证书,确保HTTPS服务始终安全有效 。它支持多种云服务提供商,包括但不限于阿里云、腾讯云、华为云,以及CDN服务如Cloudflare 。
Certd的核心功能包括:
全自动化管理:从申请到续期全流程自动化,减轻维护负担。
广泛兼容:支持多种域名注册平台和CDN服务。
多域名支持:包括通配符域名,可以满足复杂配置需求。
安全性保障:支持私有化部署,保护敏感数据。
免费高效:提供免费的证书管理方案,无需支付高昂的商业证书费用。
社区与支持:活跃的社区和技术支持,帮助用户更好地使用Certd。
使用Certd的好处包括:
提高效率:自动化流程减少了人工干预,提高了操作效率。
减少错误:自动续期和更新减少了因人为疏忽导致证书过期的风险。
节省成本:免费使用,降低了使用SSL证书的成本。
增强安全性:确保网站的HTTPS连接始终处于有效状态。
Certd适合各种规模的网站和服务,无论是小型站点还是大型企业,都能从中受益 。安装和配置Certd相对简单,支持一键安装和容器化管理,适配多种运行环境 。
如果您需要为您的网站或服务设置或管理SSL证书,Certd是一个值得推荐的工具。它不仅能够提高管理效率,还能帮助您节省成本,并确保网站的安全性。
部署
在群晖NAS上面的“File Station”中新建一个docker映射文件,用于映射docker中certd的数据。
打开“Container Manager”,在“项目”中,点击“新增”。填写项目名称,路径选择创建好的映射文件夹,文件选择“创建 docker-compose.yml”,然后将以下配置代码复制粘贴进去。
配置请根据自己实际情况进行修改。
#version: '3.3' services: certd: # 镜像 # ↓↓↓↓↓ --- 镜像版本号,建议改成固定版本号 image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest container_name: certd # 容器名 restart: unless-stopped # 自动重启 volumes: # ↓↓↓↓↓ -------------------------------------------------------- 数据库以及证书存储路径,默认存在宿主机的/data/certd/目录下,【您需要定时备份此目录,以保障数据容灾】 - /data/certd:/app/data ports: # 端口映射 # ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号 - "7001:7001" dns: # ↓↓↓↓ ---------------------------------------------------------- 如果出现getaddrinfo ENOTFOUND等错误,可以尝试修改或注释dns配置 - 223.5.5.5 - 223.6.6.6 # ↓↓↓↓ ---------------------------------------------------------- 如果你服务器部署在国外,可以用8.8.8.8替换上面的dns # - 8.8.8.8 # - 8.8.4.4 # extra_hosts: # ↓↓↓↓ ---------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址 # - "localdomain.comm:192.168.1.3" environment: # 环境变量 - TZ=Asia/Shanghai #- HTTPS_PROXY=http://xxxxxx:xx #- HTTP_PROXY=http://xxxxxx:xx # ↑↑↑↑↑ ------------------------------------- 这里可以设置http代理 - certd_system_resetAdminPasswd=false # ↑↑↑↑↑--------------------------- 如果忘记管理员密码,可以设置为true,重启之后,管理员密码将改成123456,然后请及时修改回false - certd_cron_immediateTriggerOnce=false # ↑↑↑↑↑--------------------------- 如果设置为true,启动后所有配置了cron的流水线任务都将被立即触发一次 - VITE_APP_ICP_NO= # ↑↑↑↑↑ ----------------------------------------- 这里可以设置备案号 #- certd_koa_key=./data/ssl/cert.key #- certd_koa_cert=./data/ssl/cert.crt # ↑↑↑↑↑ ----------------------------------------- 配置证书和key,则表示https方式启动,使用https协议访问,https://your.domain:7001 # 设置环境变量即可自定义certd配置 # 服务端配置项见: packages/ui/certd-server/src/config/config.default.ts # 服务端配置规则: certd_ + 配置项, 点号用_代替 # 客户端配置项见: packages/ui/certd-client/.env # 按实际名称配置环境变量即可,如: VITE_APP_API=http://localhost:7001
最后点击“下一步”,等待镜像拉取和容器创建完成。
使用
输入IP:Port访问控制台,默认用户名为
admin
,默认密码为123456
。登录成功后,记得修改默认密码,增强安全性。
设置邮箱,以接收任务执行结果通知。
演示中使用的是腾讯企业邮箱示例,请根据自己使用的邮件服务器进行修改。
在”授权管理”中点击“添加”,此处以腾讯云为例,具体需要根据你的域名所在的DNS进行修改。
在“授权管理”中点击“添加”,以主机登录授权为例,填写SSH登录信息,然后点击“确定”。
在“证书自动化流水线”中点击“创建证书流水线”。
域名请修改成自己需要申请证书的域名;邮箱填写自己的真实邮箱;证书申请插件根据提示进行选择;证书提供商选
Let's Encrypt
最简单;加密算法用默认的RSA 2048
;DNS提供商根据你的域名所使用的云DNS进行选择;DNS解析授权填写之前我们在“授权管理”中添加的DNS服务商类型;更新天数默认20即可;定时触发可以根据提示设置成0 0 0,4 * * *
;失败邮件通知建议启用。在“证书自动化流水线”中找到我们刚刚添加的流水线,然后点击“✏”图标进行编辑。
点击“+”图标,然后给当前任务进行命名,随后点击“添加步骤”。
此处以上传证书到主机为例,先选择“主机”,然后选择“上传证书到主机”,最后点击“确定”。
此处以上传证书到雷池WAF中的证书路径为例,填写证书保存路径;选择主机登录配置,随后点击“确定”。
完成上述步骤以后,我们可以点击“手动触发”进行验证。
- 感谢你赐予我前进的力量