2.6 KiB
2.6 KiB
初始化目录与代理校验
证书目录自动创建
第四步先校验证书目录,再验证实际写入。已有写权限时直接创建缺失目录;Linux 权限不足时调用随正式发布包安装的 Scert-storage.socket 和 Scert-storage.service。它们是正式产品组件,不是临时测试脚本。
- 主服务仍使用普通
Scert账户,不增加 root 身份、系统管理能力或整个文件系统的写权限。 - 目录服务仅监听
/run/scert-storage/prepare.sock,通过内核身份验证调用者;主服务也验证服务端为 root。 - 只接受证书路径,不接受 shell 命令、其他服务名称或任意配置位置。
- 默认批准
/ssl、/var/lib/scert/certificates,安装器的--certificate-dir可额外批准一个存储范围。输入其他路径不会自动扩大批准范围。 - 新目录由服务创建,最终目录归
Scert所有、权限为0700。不递归修改已有文件,不接管其他账户的目录。 - 特权操作的父目录必须仅 root 可写,逐层拒绝符号链接。已可写的证书子目录由普通账户直接创建,不需要特权操作。
- 通过 systemd 的
bind操作只开放所选目录,随后保存对应的ReadWritePaths,不重启初始化服务、不丢失在线验证会话。需要支持该操作的 systemd;不支持时明确失败,不降级放开权限。 - 安装器升级前须停止目录服务及 socket,正式主服务启动时会拉起 socket。无需手动创建用户填入的证书叶目录。
代理与证书信任
测试环境证书不受系统公共 CA 信任。当前代理管理模式要求管理域名及正式环境证书;测试环境和 IP 自签名管理入口应使用直接 HTTPS。前后端均在提交前拒绝不支持的组合,后端不会消耗验证令牌或申请证书。
正式代理模式申请候选证书后,先临时监听配置的上游 HTTPS 端口,再访问真实管理域名与代理公开端口。连续三次请求必须通过公共 TLS 验证,且返回本次随机生成的响应。代理返回 502、错误服务的 200、重定向、证书链不可信或端口不一致均不能提交初始化。
代理需要将管理入口路径转发到所选上游端口,包括 /.well-known/scert-setup/。预检不关闭 TLS 校验、不修改代理信任库、不使用环境代理、不强制解析到测试 IP。
预检通过后关闭临时监听,保存配置并启动正式应用;预检失败则保留初始化未完成状态,并回滚候选管理证书。该检查不能替代正式应用启动、续期、推送、重启及完整生产部署验收。