我想使用客户端 SSL 证书来限制主页的访问。互联网上的大多数教程都这样描述它:
- 创建自己的密钥CA.key
- 创建服务器密钥 server.key (自签名)
- 使用 CA.key 签署 server.key
- 创建(多个)客户端密钥 client_xx.key
- 使用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 生成的文档它更详细地介绍了这一确切主题。