Add managed Nginx HTTP-01 gateway activation and certificate status
This commit is contained in:
1 parent
6a1bace3e9
commit
cb28b235ef
10 files changed
+379
-23
No files matched your search
@@ -3,7 +3,7 @@
|
||||
| 字段 | 内容 |
|
||||
|---|---|
|
||||
| 级别 | S3(公网暴露面、系统服务、证书私钥) |
|
||||
| 状态 | 本地实现入口模式保存、首次初始化与路由白名单预览;线上未安装 Nginx/Certbot,80/443 尚未启用 |
|
||||
| 状态 | 已实现入口模式、依赖准备、管理员启用站点与申请证书;2026-10-22 线上已安装 Nginx/Certbot,80/443 待发布验证 |
|
||||
| 已有实现 | SDD-003 的 Go `autocert` 单域名监听已在本地完成,尚未上线 |
|
||||
| 目标 | 管理员从页面设置域名并查看证书;可选地由 Nginx 承担 80/443、HTTP-01 和认证反代,未知管理站点路径直接断开 |
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
|
||||
首次引导增量:设置页将通用网络检查(root、默认出口、IPv4 转发)与可选的 Nginx 入口准备分开;只有管理员点击通用修复时才启用 IPv4 转发。各协议专属依赖仍在“创建专线”按所选协议单独检测、安装。Nginx 卡片只读检测 `/etc/os-release`、root、软件可用性;点击准备后以 POST 流接收逐条进度。服务端只执行 Ubuntu 的 `apt-get` 或 TencentOS Server 4 的 `dnf` 固定安装参数,创建 ACME webroot,不接受客户端命令、路径或包名。单次仅一项任务、各命令有超时;浏览器离开不取消已开始的系统包操作。不会写已有 Nginx 站点配置,也不会假称证书已签出。安装完成后须按下述步骤启用 HTTP 站点并签发。初始化失败保留软件包状态,重新检测后可重试,不删除已有配置。
|
||||
|
||||
1. 由管理员先核对域名、云安全组 TCP 80/443、站点冲突、Nginx/Certbot 软件包和 Certbot 续期定时器;如启用 Go 监听,先规划停止 Go 80/443 后再启动 Nginx。页面只保存入口模式和预览配置,不会写入 `/etc/nginx`,也不会实际检测外部代理状态。
|
||||
2. 生成最小 HTTP 站点,仅让指定域名的 `/.well-known/acme-challenge/` 从固定 webroot 读取令牌;其他请求关闭。检查 `nginx -t` 后启动 Nginx,用 Certbot `--webroot` 首次签发。
|
||||
3. 证书签出后添加 443 站点;Nginx 配置要精确匹配管理站点路由,TLS 默认主机拒绝握手,认证入口仅以独立 Host 转发到 `127.0.0.1:19090+`。`nginx -t` 通过后 reload,再验证合法 API、SPA 深链接、未知路径、HTTP-01、证书域名和到期日。
|
||||
4. 验证续期的 `certbot renew --dry-run` 与 deploy hook;失败时恢复原站点配置与原 HTTP 服务,保留 `data/` 和证书缓存。Nginx 模式不把签发结果宣称为 Go `autocert` 的缓存证书。
|
||||
1. 由管理员核对域名、云安全组 TCP 80/443、站点冲突、Nginx/Certbot 软件包和 Certbot 续期定时器;先保存 `nginx` 模式并重启服务,避免 Go 占用 80/443。页面启用操作会检查现有启用站点及监听端口;拒绝覆盖非发行版默认站点或其他自定义站点。
|
||||
2. 生成最小 HTTP 站点,仅让指定域名的 `/.well-known/acme-challenge/` 从固定 webroot 读取令牌;其他请求关闭。检查 `nginx -t` 后启动 Nginx,用 Certbot `--webroot` 首次签发。发行版默认站点软链接移动至 `/etc/nginx/opsx-vpn-default.disabled`,失败时原路径恢复;签发失败保留 HTTP 验证站点供重试。
|
||||
3. 证书签出后添加 443 站点;Nginx 配置要精确匹配管理站点路由,TLS 默认主机拒绝握手,认证入口仅以独立 Host 转发到 `127.0.0.1:19090+`。`nginx -t` 通过后 reload,再验证合法 API、SPA 深链接、未知路径、HTTP-01、证书域名和到期日。管理员 API 的 NDJSON 输出在页面实时展示;证书公钥元数据从 Certbot 路径读取,私钥不返回。
|
||||
4. 验证续期的 `certbot renew --dry-run` 与 deploy hook;证书更新后通过固定钩子校验、重载 Nginx。HTTP 站点安装失败时恢复原配置;证书签发失败保留 HTTP 验证站点;HTTPS 配置校验失败时退回 HTTP 站点。保留 `data/` 和证书缓存。Nginx 模式不把签发结果宣称为 Go `autocert` 的缓存证书。当前 Certbot 注册不提供邮箱,续签异常须主动监控。
|
||||
|
||||
## 验收
|
||||
|
||||
@@ -34,4 +34,4 @@
|
||||
|
||||
## 边界
|
||||
|
||||
`return 444` 是 Nginx 的断连响应,不是权限控制;合法接口仍必须由 Gin 鉴权。Go `autocert` 模式不会提供 `return 444`。不能用路径白名单阻断 ACME 续期、MFA 或 WebAuth。认证域名与管理域名若合并,需要重新设计路径分发及 Cookie 隔离,不能直接套用独立域名配置。安装初始化已提供页面按钮;签发、续期、Nginx 站点启用及认证域名接入尚未开发成页面一键操作,也未在生产环境执行。
|
||||
`return 444` 是 Nginx 的断连响应,不是权限控制;合法接口仍必须由 Gin 鉴权。Go `autocert` 模式不会提供 `return 444`。不能用路径白名单阻断 ACME 续期、MFA 或 WebAuth。认证域名与管理域名若合并,需要重新设计路径分发及 Cookie 隔离,不能直接套用独立域名配置。认证域名接入仍待独立域名和真实发行者信息;Certbot 续签 dry-run 与公网联调以实际执行记录为准。
|
||||
Reference in new issue
Block a user