我是证书业务的新手,据我所知,如果在 Windows 10 中安装了根证书,那么任何由该根签名的证书都会自动受到信任。
所以我希望我的链条看起来像这样:
- 根 (所有用途)
- 应用程序(代码签名目的)
- 每个应用程序一个证书。
- 网站 (SSL)
- 每个网站一个证书。
- 应用程序(代码签名目的)
我认为我的应用程序安装程序在实际安装应用程序之前可以安装根证书和两个中间证书。然后它还可以安装证书(由应用程序证书签名),然后安装应用程序。但显然这行不通,因为我的安装程序将从我的网站下载,并且在安装程序运行之前该网站不会被信任。
我想知道的是,是否有可能让已经受信任的 CA(Digi Sign、Let's Encrypt 等)对我的根证书进行签名。如果可以,那么我的所有证书(根证书、中间证书、单个应用程序/网站)都会自动受信任吗?
如果是,我需要 CA 提供什么类型的签名或证书?有人可以推荐一个 CA 吗?我找不到。
谢谢!
答案1
理论上,是的,另一个 CA 可以交叉签名你的证书。但前提是已经一般来说,这是一个成熟的 CA,因为其他 CA 的声誉取决于它们仅颁发满足行业要求的验证规则及其他要求的证书 - 并且这扩展到所有它们交叉签名的 CA。
例如,在最初几年,“Let's Encrypt”中间件由 IdenTrust 交叉签名,直到 ISRG 自己的根 CA 证书变得足够普及。(是的,“Let's Encrypt”不是根 CA - ISRG 才是。)
所以这是有可能的,但如果你只是在车库里运营,那就非常不太可能发生。我认为,这实际上比直接让您的根 CA 被 Windows“受信任 CA”列表接受的可能性更小。
另一种选择是,如果客户需要大的证书数量多时,许多 CA 会专门为该客户颁发中间证书。过去,这意味着您只会获得私钥和所有内容;现在,这种做法有点不受欢迎(因为有几起此类中间证书进入“SSL 检查”硬件并被某些 CEO 用于伪造证书的案例)。
因此,虽然仍然可以购买中级 CA 证书,但现在您只能通过远程 API 访问仍由原始 CA 管理的证书 - 您的公司名称会显示在层次结构中,但您仍需遵守验证规则。
换句话说,CA 倾向于避免执行你所要求的操作,我怀疑这恰恰是他们的证书不会用于像您这样的目的。没有人喜欢他们的计算机上随机出现一个发出伪造证书的程序。
答案2
我建议好好读一读维基百科 公钥证书 在继续之前,由于您的帖子显示出对基本概念缺乏理解:
- 根证书通常由证书颁发机构保留
- 您需要两种由知名证书颁发机构颁发的证书:您网站的 TLS/SSL 服务器证书和您应用的代码签名证书。您可以将同一份证书用于多个网站/程序。
- 您不需要安装您的证书,当证书颁发机构验证证书后,这将自动完成。
互联网上有大量关于证书的信息。您需要做的就是搜索和阅读。
答案3
我认为我的应用程序安装程序在实际安装应用程序之前可以安装根证书和两个中间证书。
如何安装证书完全取决于您所使用的操作系统。例如,除非 Apple 签名,否则 iOS 应用程序无法安装在设备上。因此,您无法在任何 iOS 设备上安装由您自己的证书签名的 iOS 应用程序。同样,Windows 允许您手动将任何您想要的证书安装到证书存储区。这将允许最终用户访问使用自签名证书的加密 HTTPS 会话。但是,只有经过验证的代码签名证书才能用于将 UWP 应用程序发布到 Windows 应用商店。
您可以自行签署自己的代码签名证书,但最终用户必须将证书安装到设备上的证书存储中,否则,Windows 会抱怨并指出用于签署应用程序的证书存在问题。
然后它也可以安装证书(由应用程序证书签名),然后安装应用程序。但显然这行不通,因为我的安装程序将从我的网站下载,而安装程序运行之前该网站不会被信任。
这就是您只需购买用于签署安装程序的证书的原因。 但是,将证书安装到用户证书存储区的应用程序可以添加代码,这通常被称为恶意软件。iOS 设备无法将证书安装到 iOS 设备。
我想知道的是,是否有可能让已经受信任的 CA(Digi Sign、Let's Encrypt 等)对我的根证书进行签名。如果可以,那么我的所有证书(根证书、中间证书、单个应用程序/网站)都会自动受信任吗?
这种事绝不会发生。 如果根 CA 为您提供了证书,您可以使用它来创建其他证书,然后您就不需要他们来创建其他证书了。此外,通过签署第一个证书,他们还将签署由他们最初提供的证书签署的任何证书。 这意味着,作为该证书的所有者,您可以创建任何您想要的证书,并且不信任您创建的证书的唯一方法是撤销最初用于签署该证书的根 CA 证书 根 CA 的撤销是一件很严重的事情,因为它签署的任何证书都将不再受信任。
当然,这是因为整个信任路径完全依赖于第一个证书。根 CA 证书应被撤销的唯一原因是,有证据表明该证书最终与恶意软件有关(或者可能是意外泄露)。 Root CA 可以使用 15 年是有原因的。
过去,谷歌、微软、苹果和 Mozilla 都曾威胁要撤销根 CA 证书,原因是不良商业行为导致根 CA 证书被用于签署恶意软件。
如果是,我需要 CA 提供什么类型的签名或证书?有人可以推荐一个 CA 吗?我找不到。
您需要为任何网站获取单独的证书,并为任何平台获取证书来签署您的应用程序代码。具体要求完全取决于平台。Windows、Apple 和 Google 对发布的数字签名代码都有不同的要求。在某些情况下,甚至不需要签署代码,换句话说,未签名的代码无法运行。