{"id":16550867,"url":"https://github.com/tmaize/apisix-acme","last_synced_at":"2025-09-10T14:23:08.767Z","repository":{"id":63652909,"uuid":"451088750","full_name":"TMaize/apisix-acme","owner":"TMaize","description":"apisix acme tool, support 2.x and 3.x","archived":false,"fork":false,"pushed_at":"2024-08-05T12:24:32.000Z","size":396,"stargazers_count":27,"open_issues_count":1,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-12T19:35:41.577Z","etag":null,"topics":["acme-sh","apisix"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TMaize.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-23T11:52:09.000Z","updated_at":"2024-07-21T14:36:33.000Z","dependencies_parsed_at":"2024-07-21T16:16:18.514Z","dependency_job_id":null,"html_url":"https://github.com/TMaize/apisix-acme","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMaize%2Fapisix-acme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMaize%2Fapisix-acme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMaize%2Fapisix-acme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMaize%2Fapisix-acme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TMaize","download_url":"https://codeload.github.com/TMaize/apisix-acme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221667536,"owners_count":16860621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acme-sh","apisix"],"created_at":"2024-10-11T19:35:39.497Z","updated_at":"2024-10-27T11:11:30.746Z","avatar_url":"https://github.com/TMaize.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# apisix-acme\n\n管理 apisix 里面的证书，支持自动续期，支持通过接口创建单域名、泛域名证书\n\n单域名：优先使用 dns 验证，未配置 dns_api 的情况下使用 apisix 自动创建路由进行文件验证\n\n泛域名：只支持使用 dns 验证\n\n## 步骤\n\n1. 域名解析到 apisix 服务器（dsn 验证不需要该步骤）\n\n2. 调用服务 `http://${apisix-server}/apisix_acme/task_create` 创建证书，也可在 apisix 里面手动导入证书\n\n3. 每天凌晨会自动检查即将过期且符合格式（单sni）的证书并自动重新申请\n\n## 配置文件\n\n参考 [config.yml](config.example.yml)\n\n## 安装\n\n可以直接使用 [tmaize/apisix-acme](https://hub.docker.com/r/tmaize/apisix-acme) 镜像，或者本地构建`./build.sh build`\n\n```yaml\nversion: \"3\"\n\nservices:\n  apisix-acme:\n    image: tmaize/apisix-acme:2.3.4\n    restart: always\n    volumes:\n      - ./out:/app/out\n      - ./config.yml:/app/config.yml\n    environment:\n      - TZ=Asia/Shanghai\n    networks:\n      apisix:\n\nnetworks:\n  apisix:\n    external: true\n```\n\n## API\n\n- 新增、更新证书 `/apisix_acme/task_create`\n\n  domain 必填，serviceList、mail、force，VERIFY-TOKEN 可选\n\n  ```\n  POST {\"domain\":\"example.com\",\"serviceList\":[],\"mail\":\"\",\"force\":false}\n  HEADER {VERIFY-TOKEN: xxxxxxxxxx}\n  ```\n\n  响应\n\n  ```json\n  { \"code\": 200, \"message\": \"证书已存在且未过期，跳过操作\", \"data\": { \"status\": \"skip\", \"domain\": \"example.com\" } }\n  ```\n\n  ```json\n  { \"code\": 200, \"message\": \"证书申请中，等待片刻\", \"data\": { \"status\": \"running\", \"domain\": \"example.com\" } }\n  ```\n\n  ```json\n  { \"code\": 200, \"message\": \"任务已提交，等待片刻\", \"data\": { \"status\": \"created\", \"domain\": \"example.com\" } }\n  ```\n\n- 查询任务 `/apisix_acme/task_status`\n\n  请求\n\n  ```\n  GET ?domain=example.com\n  ```\n\n  响应\n\n  ```json\n  { \"code\": 200, \"data\": { \"status\": \"error\", \"domain\": \"example.com\", \"error\": \"域名不存在\" } }\n  ```\n\n  ```json\n  { \"code\": 200, \"data\": { \"status\": \"running\", \"domain\": \"example.com\" } }\n  ```\n\n  ```json\n  { \"code\": 200, \"data\": { \"status\": \"success\", \"domain\": \"example.com\" } }\n  ```\n\n- 工具页面 `/apisix_acme/tool.html`\n\n## Acknowledgments\n\n[acme.sh](https://github.com/acmesh-official/acme.sh)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmaize%2Fapisix-acme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmaize%2Fapisix-acme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmaize%2Fapisix-acme/lists"}