使用SSL证书进行authentication – 一般问题

使用证书的SSL客户端authentication – 这是一个复杂的话题,我认为我已经学会了足够的东西,使其更加复杂。

这是我的基本理解:公钥和私钥由证书颁发机构生成。 这些信息可以保存在“证书”中,然后由客户端使用来进行authentication。

为什么有可能没有私钥的证书? 我知道,如果从Windows证书商店导出证书,您可以导出它没有私钥。 没有使用私钥的证书如何? 我一直以为你需要这两个,如果你要转移到另一台电脑/设备使用。

如果公钥和CA已经知道,是否可以随时请求私钥?

公钥和私钥由证书颁发机构生成。

您可以select允许证书颁发机构为您生成私钥,但是您不必这样做。 您可以在您自己的系统上生成私钥,然后向证书颁发机构提交证书签名请求。 证书颁发机构不需要知道您的私钥。 如果你真的对安全有偏见,你不应该让他们为你生成私钥。

这些信息可以保存在“证书”中,然后由客户端使用来进行authentication。 为什么有可能没有私钥的证书?

对于一个服务来validation你的密钥是有效的,他们或者需要信任已经生成你的证书的证书颁发机构的根密钥,或者他们需要你的证书副本和密钥的公共部分。 validation您的服务不需要您的私钥。

没有使用私钥的证书如何?

一些服务可能不希望信任CA颁发的每个密钥。 所以他们可能想要保存你的密钥的公开版本,让他们知道你是你。 当然,如果他们相信CA将有效信息放入主题,那么

如果公钥和CA已经知道,是否可以随时请求私钥?

如果您只有公钥,永远不可能检索私钥。

如果您允许您的CA为您生成私钥,并且将私钥保存在其系统中,并且安全性较差,那么我认为CA可能受到攻击,并且检索到私钥。 密钥的公共部分将包含有关CA的信息。 这些似乎不太可能。