4 Commits

Author SHA1 Message Date
xfy911
f38effff49 feat: ACME 配置集成 + 自动续期后台协程
Some checks failed
CI / build (push) Failing after 26s
- cocoon_config_t 新增 ACME 字段(enabled, directory_url, email, domains,
  cert_path, key_path, renew_days),支持最多 8 个域名
- config.c: JSON 解析 acme 配置块、校验逻辑、config_merge 支持
- main.c: 新增 --acme 命令行开关
- server.c: server_start 启动 ACME 自动续期后台协程(检查周期 24h,
  提前 renew_days 触发重新签发)
- acme.c: 实现 acme_save_certificate 证书持久化、
  acme_cert_days_until_expiry 过期天数检查
- acme.h: 新增 save_certificate / cert_days_until_expiry 接口声明
- 新增 tests/unit/test_acme_config.c:覆盖配置解析、校验、合并、
  证书过期检查、证书保存共 6 项测试
- 修复 test_config.c 中 config_merge 调用以匹配新签名
2026-06-16 12:45:08 +08:00
xfy911
a198b089b9 Phase 5: ACME HTTP-01 挑战响应路由 + 编译警告修复
Some checks failed
CI / build (push) Has been cancelled
- 修复 config.c 中 FastCGI 配置的 strncpy 截断警告(改用 snprintf)
- 新增 acme_get_keyauth(): 计算 RFC 8555 HTTP-01 keyAuthorization
- server_context 新增 acme_ctx_t 字段,server_destroy 中自动释放
- 新增 ACME 挑战端点路由: /.well-known/acme-challenge/<token>
- 新增 test_acme_get_keyauth 单元测试(9 项 ACME 测试全部通过)
- 编译零警告(仅外部 coco 库 GNU-stack linker 提示)
2026-06-16 09:25:45 +08:00
xfy911
6af0ba5ab2 Phase 5 — ACME 模块:修复 OpenSSL 3.0 弃用警告,零警告编译通过
Some checks failed
CI / build (push) Failing after 7m58s
- 使用 EVP_PKEY_get_octet_string_param("pub") 替代弃用的 EC_KEY API
- 移除未使用的 base64url_decode,消除编译器警告
- 修复 strncpy 潜在截断,改用 snprintf
- 单元测试 474 项全部通过,集成测试 111 项通过
2026-06-16 03:39:12 +08:00
xfy911
4a6e7adc17 Phase 5 — ACME / Let's Encrypt 自动证书模块骨架
Some checks failed
CI / build (push) Failing after 30s
- 新增 acme.h / acme.c:ACME RFC 8555 协议客户端基础实现
  - JWS ES256 签名(账户密钥管理)
  - ACME 目录发现、Nonce 管理
  - 账户创建/复用(newAccount)
  - 订单创建(newOrder)
  - 授权获取与挑战响应(HTTP-01)
  - 订单轮询与证书下载
  - 一键签发封装 acme_issue_certificate()
- 新增 tests/unit/test_acme.c:9 项单元测试
- Makefile:添加 acme.c 编译、-lcurl 链接、test_acme 测试规则

当前状态:ACME 骨架完成,JWS 签名需后续完善以通过
Let's Encrypt 验证。下阶段完成 HTTP-01 挑战服务器集成。
2026-06-16 03:25:47 +08:00