如何使用 CaCert CA 为员工创建客户端 SSL 证书?

如何使用 CaCert CA 为员工创建客户端 SSL 证书?

我想使用客户端 SSL 证书来限制主页的访问。互联网上的大多数教程都这样描述它:

  1. 创建自己的密钥CA.key
  2. 创建服务器密钥 server.key (自签名)
  3. 使用 CA.key 签署 server.key
  4. 创建(多个)客户端密钥 client_xx.key
  5. 使用CA.key签署client_xx.key

我不想自行签署我的服务器密钥,而是使用 CaCert。所以我省略了第一步。但是当我想创建客户端证书时,我需要使用哪个密钥?我没有 CaCerts CA.key。

答案1

我不太确定,但是因为没有其他人回答,所以我的看法是这样的。

唯一能够签署证书的实体是 CA。CA 有不同级别,因此理论上您可以设置自己的从属于 CaCert 的 CA(因此它拥有由 CaCert 签署的自己的 CA 证书)。这将使您要签署的普通证书参与长度为 3(而不是 2)的信任链。

据我所知这一页,有可能成为“CACert 成员”并获得所谓的“子根”证书 — — 该证书允许您签署自己的证书,并使任何信任根 CACert 证书的人都信任这些证书(假如您还可以通过某种方式提供下属 CA 的证书 - 例如,使用 PEM 格式证书的服务器可能使用仅仅是服务器证书和 PEM 格式的 CA 证书的串联的证书文件。

我个人对这种设置的经验是这样的:不久前,xmpp.net 联盟为任何管理员希望获得证书的 XMPP 服务器提供付费免费证书。该联盟本身是 StartCom 的下属 CA。因此,在获得我的服务器证书后,我需要告诉我的服务器将其自己的证书和 xmpp.net 证书放在一个包中,以便为其客户端提供完整的信任链,因为他们通常信任 StartCom 而不是 xmpp.net。

答案2

您显然不会获得 CACert 的密钥,因为这会破坏整个系统。您需要做的是创建一个“证书签名请求”(又称 CSR)以及一个新的私钥,然后将此 CSR 发送给 CACert 进行签名(这样您将获得一个有效的签名证书)。

如果你正在使用openssl ca证书管理,你可能会使用类似

openssl req -new -key client1.key -out client1.csr

并将client1.csr的内容粘贴到CACert的证书申请表中。

你还应该看看CACert 关于 CSR 生成的文档它更详细地介绍了这一确切主题。

相关内容