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