我正在考虑构建一个根 CA,以便与我正在组装的东西一起使用。
每个客户都会在我这里注册自己的服务器,然后我会以 (id).example.com 持有者的身份签署他们的证书。每个客户都会安全地下载我的 CA 证书,并将其设置为仅对 example.com 及其子域可信。
如何将我自己的 CA 证书设置为仅适用于 example.com?我的客户不会信任我签署(比如说)paypal.com,只会信任我为其创建的域名及其子域名。我也不想处于有人强迫我签署他们不可靠的证书的境地。
(我目前正在研究 openssl,但任何替代方案都可以。如果它只是一个命令行选项,那么它目前让我很困惑。)
答案1
PKI 没有限制证书颁发机构仅在某些区域签署证书的方法。一旦您信任 CA,您就会无条件地信任它生成的所有内容。对 CA 没有条件信任,只有证书。这实际上意味着,如果您信任公司的 CA,您也会信任由公司 CA 为 mail.google.com 签署的证书。正是出于这个原因,扩展验证证书正变得风靡一时。
要求客户信任 CA 是一项重大要求。如果只是几个服务器需要信任是一回事,但要求他们的整个基础设施我认为大多数公司都不愿意相信这一点。
答案2
名称约束扩展属性可用于将证书签名限制到特定域。这是 PKI 基础结构的一部分(RFC 5280 - 第 4.2.1.10 节)。它在浏览器中的支持程度完全是另一回事。