使用证书的 SSL 客户端身份验证——这是一个复杂的话题,我认为我学到的知识足以让它变得更加复杂。
这是我的基本理解:公钥和私钥是由证书颁发机构生成的。此信息可以保存在“证书”中,然后由客户端用于身份验证。
为什么可以有没有私钥的证书?我知道,如果从 Windows 证书商店导出证书,您可以在没有私钥的情况下导出它。如何使用没有私钥的证书?我一直认为,如果您要将其转移到另一台电脑/设备上使用,则两者都需要。
如果公钥和 CA 已知,是否可以随时请求私钥?
使用证书的 SSL 客户端身份验证——这是一个复杂的话题,我认为我学到的知识足以让它变得更加复杂。
这是我的基本理解:公钥和私钥是由证书颁发机构生成的。此信息可以保存在“证书”中,然后由客户端用于身份验证。
为什么可以有没有私钥的证书?我知道,如果从 Windows 证书商店导出证书,您可以在没有私钥的情况下导出它。如何使用没有私钥的证书?我一直认为,如果您要将其转移到另一台电脑/设备上使用,则两者都需要。
如果公钥和 CA 已知,是否可以随时请求私钥?
您可以选择允许证书颁发机构为您生成私钥,但您不必这样做。您可以在自己的系统上生成私钥,然后向证书颁发机构提交证书签名请求。证书颁发机构不需要知道您的私钥。如果您真的对安全性感到偏执,您不应该让他们为您生成私钥。
对于验证您的密钥是否有效的服务,他们需要信任生成您的证书的证书颁发机构的根密钥,或者他们需要您的证书副本以及密钥的公共部分。对您进行身份验证的服务不需要您的私钥。
某些服务可能不想信任 CA 颁发的每个密钥。因此,他们可能希望保存您的密钥的公开版本,以便他们知道您就是您。当然,如果他们信任 CA 将有效信息放入主题中,那么
如果您只有公钥,则永远不可能检索到私钥。
如果您允许您的 CA 为您生成您的私钥,并且他们将私钥保存在他们的系统上并且安全性较弱,我猜 CA 可能会受到攻击并检索到私钥。密钥的公共部分将包含有关 CA 的信息。不过,这些似乎不太可能。