ls -l /opt/app/keys/private.pem
sudo -u nobody cat /opt/app/keys/private.pem

设计里说用非对称加密保护对称密钥,实际实现是把 RSA 私钥放在每台应用服务器的 /opt/app/keys 下,权限 644,任何能读目录的进程都能拿到。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:非对称分发只解决了传输环节,私钥落地后又回到对称保护的问题。私钥和密文在同一台机器上,拿到机器就两样都有。目录权限没有收紧,部署脚本还把它打进了发布包。

「密钥分发流程」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

处理上按这个顺序:私钥移到 KMS 或 HSM 里 应用只调用解密接口不持有私钥;确实要落地就限制成 600 且独立账号可读;把私钥从发布包和镜像层里彻底移除;用普通账号读一次确认权限被拒。

确认没问题再收工,nobody 账号读取返回 Permission denied 发布包里不再包含 private.pem。

作者 9823189