本文最后更新于 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是一个值得推荐的工具。它不仅能够提高管理效率,还能帮助您节省成本,并确保网站的安全性。

部署

  1. 在群晖NAS上面的“File Station”中新建一个docker映射文件,用于映射docker中certd的数据。

  2. 打开“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

    最后点击“下一步”,等待镜像拉取和容器创建完成。

使用

  1. 输入IP:Port​访问控制台,默认用户名为admin​,默认密码为123456​。

    登录成功后,记得修改默认密码,增强安全性。

  2. 设置邮箱,以接收任务执行结果通知。

    演示中使用的是腾讯企业邮箱示例,请根据自己使用的邮件服务器进行修改。

  3. 在”授权管理”中点击“添加”,此处以腾讯云为例,具体需要根据你的域名所在的DNS进行修改。

  4. 在“授权管理”中点击“添加”,以主机登录授权为例,填写SSH登录信息,然后点击“确定”。

  5. 在“证书自动化流水线”中点击“创建证书流水线”。

    域名请修改成自己需要申请证书的域名;邮箱填写自己的真实邮箱;证书申请插件根据提示进行选择;证书提供商Let's Encrypt​最简单;加密算法用默认的RSA 2048​DNS提供商根据你的域名所使用的云DNS进行选择;DNS解析授权填写之前我们在“授权管理”中添加的DNS服务商类型;更新天数默认20即可;定时触发可以根据提示设置成0 0 0,4 * * *​;失败邮件通知建议启用。

  6. 在“证书自动化流水线”中找到我们刚刚添加的流水线,然后点击“✏”图标进行编辑。

  7. 点击“+”图标,然后给当前任务进行命名,随后点击“添加步骤”。

  8. 此处以上传证书到主机为例,先选择“主机”,然后选择“上传证书到主机”,最后点击“确定”。

  9. 此处以上传证书到雷池WAF中的证书路径为例,填写证书保存路径;选择主机登录配置,随后点击“确定”。

  10. 完成上述步骤以后,我们可以点击“手动触发”进行验证。