我需要生成一个SSH密钥对,我将在稍后的程序中使用它,因此需要它们作为字符串。不幸的是,ssh-keygen
实用程序不支持将密钥写入STDOUT或类似的东西。
因此,“下一个最好的事情”就是让ssh-keygen
将其输出写入临时文件,然后我可以将其读回到程序中。但这会增加系统中其他人读取私钥文件的风险(该脚本将由Web应用程序运行)。
如何以安全的方式生成密钥对?
答案 0 :(得分:0)
没有完全安全的方法来生成用于分发的私钥;最安全的方法是让每个客户端生成其密钥对,并仅传输公钥。
但是,如果您处于无法正常工作的状态,并且您致力于集中生成密钥对,则可以选择一些选项。
有硬件安全模块(HSM)为您执行此操作。如果你负担得起,这是最好的方式。
失败:
如果您真的很偏执,您还可以确保在磁盘上加密密钥,方法是让您的Web应用程序使用自己的对称密钥在写入时加密,并在发送给用户时解密。然而,这开辟了更多关键管理来搞砸,所以我不推荐它。
如果您从未将密码短语存储到磁盘,那么在密钥上设置密码短语也会有很大帮助。如果有人设法恢复密码保护密钥,他们仍然必须猜测密钥的密码是有用的。但是,这也意味着您的用户在使用密钥时必须提供密码 - 这可能是也可能是不可接受的。