【自荐】Certimate-开源的 SSL证书管理工具,可以帮助你自动申请、部署、续期 SSL 证书

做个人产品或在小企业负责运维的同学,需要管理多个域名,要给域名申请证书。但手动申请证书有以下缺点:

  1. :scream: 麻烦:申请、部署证书虽不困难,但也挺麻烦的,尤其是维护多个域名的时候。
  2. :sob: 易忘:当前免费证书有效期仅 90 天,这就要求定期操作,增加工作量的同时,也很容易忘掉,导致网站无法访问。

Certimate 就是为了解决上述问题而产生的,它具有以下特点:

  1. 操作简单:自动申请、部署、续期 SSL 证书,全程无需人工干预。
  2. 支持私有部署:部署方法简单,只需下载二进制文件执行即可。二进制文件、Docker 镜像全部用 Github Actions 生成,过程透明,可自行审计。
  3. 数据安全:由于是私有部署,所有数据均存储在本地,不会保存在服务商的服务器,确保数据的安全性。

Certimate 旨在为用户提供一个安全、简便的 SSL 证书管理解决方案。

源码地址:

https://github.com/usual2970/certimate

一、安装

安装 Certimate 非常简单,你可以选择以下方式之一进行安装:

1. 二进制文件

你可以直接从Releases 页下载预先编译好的二进制文件,解压后执行:

./certimate serve

或运行以下命令自动给 Certimate 自身添加证书

./certimate serve 你的域名

[!NOTE]
MacOS 在执行二进制文件时会提示:无法打开“Certimate”,因为 Apple 无法检查其是否包含恶意软件。可在“系统设置 > 隐私与安全性 > 安全性”中点击“仍然允许”,然后再次尝试执行二进制文件。

2. Docker 安装


mkdir -p ~/.certimate && cd ~/.certimate && curl -O https://raw.githubusercontent.com/usual2970/certimate/refs/heads/main/docker/docker-compose.yml && docker compose up -d

3. 源代码安装

git clone EMAIL:usual2970/certimate.git
cd certimate
make local.run

二、使用

执行完上述安装操作后,在浏览器中访问 http://127.0.0.1:8090 即可访问 Certimate 管理页面。

用户名:[email protected]
密码:1234567890

usage.gif

三、支持的服务商列表

服务商 支持申请证书 支持部署证书 备注
阿里云 可签发在阿里云注册的域名;可部署到阿里云 OSS、CDN、SLB
腾讯云 可签发在腾讯云注册的域名;可部署到腾讯云 COS、CDN、ECDN、CLB、TEO
百度智能云 可部署到百度智能云 CDN
华为云 可签发在华为云注册的域名;可部署到华为云 CDN、ELB
七牛云 可部署到七牛云 CDN
多吉云 可部署到多吉云 CDN
AWS 可签发在 AWS Route53 托管的域名
CloudFlare 可签发在 CloudFlare 注册的域名;CloudFlare 服务自带 SSL 证书
GoDaddy 可签发在 GoDaddy 注册的域名
Namesilo 可签发在 Namesilo 注册的域名
PowerDNS 可签发在 PowerDNS 托管的域名
HTTP 请求 可签发允许通过 HTTP 请求修改 DNS 的域名
本地部署 可部署到本地服务器
SSH 可部署到 SSH 服务器
Webhook 可部署时回调到 Webhook
Kubernetes 可部署到 Kubernetes Secret

四、系统截图

1 个赞

刚才在nas上部署成功了,挺好用的,不过问一下能否加上到期自动更新的功能

感谢反馈~现在就有这个功能

证书到期前 10 天会自动申请并且重新部署

还有个bug就是,负载均衡添加了多个项目域名的监听证书,部署的时候只能根据监听ID来部署证书,早上我看了一下,直接将默认证书给替换了,导致项目的证书失效无法正常访问,这个能否根据证书的域名来替换吗?

昨天添加了20来个域名,刚才在系统上发现,早上8点所有的域名都重新部署了一遍(其实有部分域名证书还有几个月到期 :grinning:,也更新了),不过有十来个域名证书更新失败,日志是这个

acme: error: 503 :: POST :: https://acme-v02.api.letsencrypt.org/acme/new-order :: urn:ietf:params:acme:error:rateLimited :: Service busy; retry later.

建议给系统新增一个监测的自定义时间,由用户设置更新时间,否则所有的用户都在八点同一时间去申请证书,失败的概览会更大,由用户定义时间,可以错开服务的高峰期,成功的概率会提高很多。