Linux 服务器中如何安全的存储私钥文件?

2023-07-20 11:43:50 +08:00
 raw0xff

由于自己的应用需要用到私钥进行签名,所以私钥文件需要存储在服务器中。那么如何存储私钥文件比较靠谱呢?有没有什么方式再设置一层私钥的密钥,使人即便拥有了 root 权限也无法得知私钥?前提是应用可以正常获取私钥。

2252 次点击
所在节点    Linux
25 条回复
tomychen
2023-07-20 12:02:27 +08:00
你这个假设是 root 是不安全用户

这种场景下,怎么做才安全呢,你要解决的不是一个文件的存储问题,而是把场景切换的问题。
EvineDeng
2023-07-20 12:03:49 +08:00
以我极有限的知识,我仅知道 p12 证书可以再设置一层证书密码,使用时需要验证密码。
virusdefender
2023-07-20 12:05:31 +08:00
即使 p12 设置了密码,那 root 用户也能看到。如果真的需要那么高的安全性,你应该换硬件签名设备。
adoal
2023-07-20 12:07:20 +08:00
学术人:想办法搞一个可以没有 super user 的用户权限模型的操作系统。
运维人:限制无关人士登录/切换身份的权限。
tomychen
2023-07-20 12:08:21 +08:00
@adoal 这不就是等保最初的概念三权分立嘛
tomychen
2023-07-20 12:10:13 +08:00
app 要访问私钥进行签名...所以即使设置密码,密码也必然会在 app 内保存,至于怎么储存(加密)等,这些在 root 的面前,只是时间的问题。
deplivesb
2023-07-20 12:28:13 +08:00
假定 root 是不安全的,那就需要 yubikey 这种硬件设备了
seers
2023-07-20 13:07:05 +08:00
把签名封装成接口
GeruzoniAnsasu
2023-07-20 13:10:00 +08:00
私钥本来就可以用 passphrase 保护,要清除私钥的 passphrase 需要正确输入一次

这个机制可以理解为用对称加密将你的私钥额外加密一次,对称加密的 pass 放在你脑子里。
proxychains
2023-07-20 13:38:39 +08:00
@adoal 学院派和工程派
a1274598858
2023-07-20 14:08:33 +08:00
HSM 硬件安全模块
flyingfz
2023-07-20 15:03:20 +08:00
HashiCorp 有个 叫做 vault 的 东西, 就是专门处理这种机密信息的系统。
推荐看看。
t123yh
2023-07-20 15:05:03 +08:00
买一个 yubikey 或者 canokey
yinmin
2023-07-20 16:01:36 +08:00
如果是 docker 部署的,可以使用 docker secret 命令添加 pfx 密码,然后在 Docker Compose 中引入密码,程序使用 pfx+secret 密码去签名。
yanqiyu
2023-07-20 16:03:50 +08:00
HSM ,管理员物理带在身上,需要签名的时候插上去
4kingRAS
2023-07-20 16:08:16 +08:00
签名的频率大吗,不大就物理加密狗,大就做成服务,内网远程调用签名
raw0xff
2023-07-20 17:22:01 +08:00
@4kingRAS 签名不规律,均值在每秒一次。
MetroWind
2023-07-21 02:41:57 +08:00
把密钥相关功能单拎出来放到另一台 PKI 服务器上,上面可以跑个 HashiCorp Vault 或者 CFSSL 类似的东西,不用的时候关机断网。
ltkun
2023-07-21 08:01:10 +08:00
搞个 2FA 认证?
Vieufoux
2023-07-21 08:38:37 +08:00
Vault

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX