我想创建一个不同的(唯一的)自签名证书,分发给一些客户端。这样一来,如果一个客户端失败了,我只需删除他的证书,而不会打扰其他客户端
我关注了这篇很好的文章:http://www.eclectica.ca/howto/ssl-cert-howto.php
现在,似乎每次我想要为不同的客户端生成唯一的证书时,我都有义务创建一个根证书。
我是否真的每次都必须创建一个唯一的根 CA + 签署认证证书?
有没有更简单的方法?(比如避免每次都重新创建根 CA?)
答案1
您可能应该阅读一些有关 PKI 通常如何部署的背景知识。
您链接的文档介绍了如何创建您自己的根证书颁发机构 (CA)。完成此操作后,您将使用该 CA 为各个设备签署和注册证书(或者为中间 CA 签署证书——可能超出了您的需求范围)。
您不希望 CA 根证书泛滥。通常,您会创建一个根证书,并使用它为设备签署证书。
部署 CA 根证书后的常规工作流程如下:
- 在需要证书的主机上创建公钥/私钥对
- 在需要证书的主机上创建证书签名请求 (CSR)
- 将 CSR 提交给 CA 根进行签名
- 获取 CA 根返回的证书并将其安装在设备或主机上
您链接的文档描述了创建证书签名请求,但它实际上并没有描述这是您通常从请求证书的设备/主机执行的过程。
您可以在设备/主机之外创建公钥/私钥对和 CSR,但可以说最安全的方式是在设备/主机本身上执行此操作,因为私钥永远不会离开设备。
例如,从 OpenSSL 客户端,下面是我为 4096 位 RSA 密钥准备证书签名请求 (CSR) 的方法:
openssl req -out Signing_Request.csr -new -newkey rsa:4096 -nodes -keyout private.key
在 IIS Web 服务器上,我会使用内置的 GUI“向导”来准备新的 CSR。其他软件会采用不同的方法来准备 CSR。
一旦我获得了 CSR,我就会将其发送给 CA,正如您链接的文档中所述签署证书部分,我会让 CA 签署请求并将生成的证书安装到请求设备/主机上。
顺便说一句:您通常会在整个企业中分发您的 CA 证书,以便客户端可以验证您的 CA 在证书上签名的签名,并防止出现有关来自不受信任的 CA 的证书的警告。