是否可以拥有由多个 CA 签名的 OpenSSL 证书?
背景:我们有一个 CA,主要为机器对机器通信颁发证书。现在我们需要让用户也能访问一些服务,并希望使用同一个 CA,但它当然不受大多数供应商的信任。如果我们能让这些证书由另一个 CA 签名以增加信任度,那就太好了。
答案1
不可以,X.509 证书(OpenSSL 使用的类型)不可能有多个签名。但是,您可以颁发多个证书来执行相同的工作。
只要您保持密钥和主题相同,您就可以创建多个 CA 证书,每个证书都可以作为 CA 颁发证书的有效颁发者证书。这些 CA 证书本身可以是自签名的,也可以是由不同的 CA 颁发的,这被称为交叉签名证书。
其他回答者是正确的:任何商业 CA 都会希望在交叉签名您的 CA 之前非常彻底地检查您的政策和程序。话虽如此,从技术角度来看这绝对是可能的。
如果您所说的用户只使用您控制的设备(即他们是内部用户),那么我建议在这些设备上安装您的根 CA 证书。这是许多大公司所做的(我实际上在自己的网络上也这样做!),并允许您根据自己的政策随意颁发仅供内部使用的证书。
另一方面,如果用户是组织外部的用户(或者甚至是在家办公的员工),那么最好从受信任的商业 CA 颁发证书。如果您需要大量此类证书(每年 5 个以上),大多数商业 CA 都有减轻管理负担并通常降低成本的计划;如果您需要的数量非常大(除非每年超过 100 个,否则我甚至不会费心寻找),您可以考虑联系 CA 来设置自定义下属 CA(但如上所述,他们可能希望您设置一个新的CA 根据其政策签署该协议,而不是对现有协议进行交叉签名)。
答案2
如果我们能够让其他 CA 签署这些证书以增加信任,那就太好了。
即使这是可能的,也不会提高信任级别,因为不受信任的一方也签署了证书,这意味着证书通常不值得信任。我建议您只签署来自主要平台真正信任的新 CA 供应商的所有内容。
答案3
增加信任的唯一方法是让你的加州由受信任的 CA 签名。这样,您的 CA 将充当中间 CA,以便客户端可以按照您的证书链返回到预先信任的 CA 之一,但您颁发的证书仍然来自一个共同的根。
至少理论上是这样——但据我所知,没有 CA 愿意这样做,除非你把你的 PKI 交给他们。CACert 维基百科有关于该问题的一些详细信息。
因此,看起来,您要么让您的客户安装新的受信任的 CA,要么让面向客户的证书不是由您自己的 CA 颁发,而是由一些大型的、预先受信任的 CA 颁发,正如 Ramhound 建议的那样。