我有几个密钥对,用于通过 ssh 连接到我在 Amazon 云上的服务器,作为身份验证。我每周手动轮换这些证书。我的问题是,我需要与一些同事共享证书,一些在 LAN 上,一些在该国其他地方。共享证书的最佳做法是什么?我最初的想法是 Dropbox 和电子邮件。我们没有托管带有加密的专用电子邮件服务器,也没有 VPN。
谢谢。
答案1
我怀疑你真的在使用证书用于身份验证。几乎所有非基于密码的 SSH 身份验证都是使用公钥-私钥对完成的,但根本不涉及证书。在写这个答案之前,我在 Google 上搜索了“ssh 证书”,前 5 个结果都是来自白痴,他们错误地将裸公钥(而不是证书)称为证书。
通过公钥-私钥对进行 SSH 身份验证的工作原理如下:
首先,您要生成一个密钥对。这是两个加密关联的密钥,用一个密钥加密的任何内容只能由另一个密钥解密,反之亦然。密钥对中的两个密钥之一被视为公钥,您不关心谁可以看到它。事实上,在大多数情况下,您希望您的公钥被广泛发布到世界各地。另一个密钥被视为私钥,您不希望除了您之外的任何人访问您的私钥。
如果使用公钥-私钥对进行 SSH 身份验证,则将公钥放在服务器(在本例中为 Amazon EC2 实例)上的账户中的 authorized_keys 文件中,服务器允许任何知道私人的与公钥相结合的密钥可以登录服务器。
谁会在乎有人入侵你的 Amazon EC2 实例账户并窃取你的公钥?公钥不允许他们以你的身份登录任何东西,因为知道公钥并不意味着他们知道私钥,除非你有私钥,否则你无法登录账户私人的与帐户中的公钥相匹配的密钥。
仅当您的私钥(在家中或工作场所的您自己的 SSH 客户端计算机上)被泄露时,您才需要更改 Amazon EC2 实例上的 SSH 公钥。
如果你需要你的同事能够登录到你的 EC2 实例上的相同账户,请让他们向你发送他们的SSH 公钥(可通过任何媒介获取,无需保密,因为这些只是公钥,而不是私钥)并将这些公钥附加到 Amazon EC2 实例上的帐户中的 authorized_keys 文件中。然后,你们都可以登录这些帐户,并且你们都可以完全保密你们的私钥,无需将它们发送到任何地方。
答案2
只要您不共享私钥,只共享公钥,那么通过您能想到的最不安全的通信方法发送密钥也是安全的。尝试从公钥推导出私钥在计算上是无法承受的,而且在量子计算机出现之前,这种情况将一直存在。
有关背景信息,请查看这里。