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
-3
@@ -65,9 +65,9 @@ Go 模式(默认)使用 `golang.org/x/crypto/acme/autocert` 监听 80/443,
|
||||
|
||||
“预览 Nginx 配置”仅生成当前域名和后端实际注册 API 路由对应的两段站点配置,不会写入系统目录或启动服务。第一段监听 80,仅从 `/var/lib/opsx-vpn/acme` 提供 `/.well-known/acme-challenge/`;其他路径 `return 444`。第二段在证书**已签发后**监听 443:只反代已知前端页面、构建资源和已注册 API,其余路径 `return 444`;未知 TLS 主机名拒绝握手。切换模式必须按以下顺序进行(先备份现有站点,检查是否已有服务占用 80/443):
|
||||
|
||||
1. 可用引导按钮安装 `nginx`、`certbot`,检查云安全组放行 TCP 80/443 和域名 A/AAAA 记录;检查现有 `/etc/nginx/sites-enabled/`,若自带 default 站点占用 `default_server`,先备份并禁用该站点。若 Go 当前监听 80/443,先规划停机切换,不能同时启动 Nginx。
|
||||
2. 创建 `/var/lib/opsx-vpn/acme/.well-known/acme-challenge`,让 Nginx 工作账户能读取该目录;将页面预览的 HTTP 段保存为站点文件,先运行 `nginx -t`,再启动或重载 Nginx。先确认挑战路径从公网可读、其他 HTTP 请求断开,再执行 `certbot certonly --webroot -w /var/lib/opsx-vpn/acme -d test-link.appx365.com`。预览中的域名是页面实际配置的域名,替换示例命令中的域名。
|
||||
3. 确认证书和私钥存在于 `/etc/letsencrypt/live/<域名>/` 后,追加预览的 HTTPS 段;运行 `nginx -t` 后重载。设置 Certbot 续期定时器和 deploy hook:续期成功时先 `nginx -t`,再 `systemctl reload nginx`。运行 `certbot renew --dry-run` 并确认 hook 的实际生效方式(测试续期时可能需要 `--run-deploy-hooks`)。
|
||||
1. 在设置页安装 `nginx`、`certbot`,检查云安全组 TCP 80/443 和域名 A/AAAA 记录;保存公网域名与 Nginx 入口模式,重启 opsx-vpn 使模式生效。页面的“启用站点并申请证书”会核对已有站点和端口冲突,拒绝覆盖非默认站点;发行版默认软链接移至 `/etc/nginx/opsx-vpn-default.disabled`。Go 与 Nginx 不能同时监听 80/443。
|
||||
2. 点击启用操作后,服务生成 HTTP-01 站点并校验 `nginx -t`,使用 `certbot certonly --webroot` 申请证书;失败时页面展示过程与错误,并保留 HTTP 验证站点供重试。Certbot 当前使用无邮箱注册,续签异常不会发送邮件提醒。
|
||||
3. 证书签出后程序自动追加 HTTPS 站点、检查配置并重载,同时安装固定续签钩子(`nginx -t` + `systemctl reload nginx`)。确认 Certbot 续签定时器运行,执行 `certbot renew --dry-run` 检查续签;生产验证时再核对 `--run-deploy-hooks` 对钩子的实际效果。证书状态页读取实际的证书到期日;不要仅以站点文件存在判断公网可用。
|
||||
4. 页面保存入口模式为 Nginx,启动或重启 opsx-vpn 并设置 `VPN_LISTEN_ADDR=127.0.0.1:18080`;确认 `https://<域名>/api/health`、登录及各业务页面可用,未知路径断开,80 的挑战仍可读,然后收紧 18080 公网安全组。若现有业务必须从公网直连 18080,先迁移这些客户端。
|
||||
|
||||
不要只开放 `/oauth2/callback`:独立的 OIDC 认证域名还要转发认证组件的完整登录流程,且应另为该域名申请证书。管理站点的路由预览不覆盖认证域名;真实认证域名和组件端口确认后单独配置。若代理和 VPN 主机分离,预览里的 `127.0.0.1` 指代理主机自身,应改成受限私网地址并保护传输链路。回退时先恢复原 Nginx 配置及 opsx-vpn 入口模式,运行 `nginx -t` 后重载,不删除 `data/` 或已有证书。
|
||||
|
||||
Reference in new issue
Block a user