自签名CA和自签名证书之间的区别


80

我不清楚CA密钥和证书之间的区别。CA密钥不仅仅是证书吗?让我尝试用一​​个例子来阐明。

我有一个客户端和一个服务器。我只是在尝试验证与服务器的连接,而不是在建立对他人的信任,因此我不关心使用真正的CA进行签名。

选项1:生成一个自签名CA(ssCA),并使用它来签署证书(C)。然后我安装SSCA到我的客户机和设置我的服务器来使用证上的根密钥库Ç

选项2:生成自签名证书(SSC)。将SSC安装到客户端上的根密钥库中。设置我的服务器以使用证书SSC

第二种选择似乎更简单。那应该仍然有效吗?

Answers:


62

这两个选项均有效,选项2更简单。

如果需要多个证书,则最好使用选项1(设置自己的CA)。在公司中,您可以设置自己的CA并将该CA的证书安装在所有客户端的根密钥库中。这些客户端将接受您的CA签名的所有证书。

选项2(无需CA即可自签名证书)更加容易。如果您只需要一个证书,那就足够了。将其安装在客户端的密钥库中,就可以完成。但是,当您需要第二个证书时,则需要在所有客户端上再次安装该证书。

这是包含更多信息的链接:创建证书颁发机构和自签名SSL证书


如果CA签署了证书,我是否仍可以单独信任生成的证书(在这种情况下为C),知道我只需要信任生成的每个证书,而不是信任来自CA的一个证书?
伊万多夫

65

首先,关于密钥和证书之间的区别(关于“ CA密钥”)​​,在谈论公钥证书(通常为X.509)时使用了3个部分:公钥,私钥和证书。公钥和私钥形成一对。您可以使用私钥签名和解密,也可以使用公钥进行验证(签名)和加密。公钥旨在分发,而私钥旨在保持私有。

公钥证书是公钥和各种信息(主要是关于密钥对所有者的身份,控制私钥的人)之间的组合,该组合是使用密钥的发行者的私钥签名的证书。X.509证书具有主题专有名称和颁发者专有名称。颁发者名称是颁发证书的实体的证书的主体名称。自签名证书是发卡行和主题相同的一种特殊情况。通过签署证书的内容(即颁发证书),发行者可以声明其内容,尤其是密钥,身份(主题)和各种属性(可以指示证书的使用意图或范围)之间的绑定。证书)。

最重要的是,PKIX规范定义了一个扩展(给定证书的一部分),该扩展指示一个证书是否可以用作CA证书,即它是否可以用作另一个证书的颁发者。

由此,您可以在最终实体证书(对于用户或服务器要验证的证书)和您信任的CA证书之间构建证书链。服务的最终实体证书和您信任的CA证书之间可能存在中间的CA证书(由其他CA证书发行)。您不一定严格要求在顶部使用根CA(自签名CA证书),但通常是这样(您可以选择直接信任中间CA证书)。

对于您的用例,如果您为特定服务生成自签名证书,则它是否具有CA标志(基本约束扩展)并不重要。您将需要它是CA证书才能发布其他证书(如果要构建自己的PKI)。如果您为此服务生成的证书是CA证书,则不会造成任何损害。更重要的是,可以配置客户端以信任该特定服务器的证书的方式(例如,浏览器应让您轻松地做出明确的例外)。如果配置机制遵循PKI模型(不使用特定例外),则由于不需要构建链(仅包含一个证书),则应该能够将证书直接导入为证书的信任锚的一部分。您的客户,无论是


1
谢谢你提供的详情。我要给Helge正确的答案,因为它来得更快而且更简短。但是,很高兴知道这一点。
佩斯

8

您可以openssl x509 -noout -text -in $YOUR_CERT查看文件内容之间的差异:

在您自己签名的CA中,您可以看到:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:TRUE, pathlen:0

在您的自签名证书中,它是:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE

0

您必须始终具有根CA,该CA具有可用于签署低级证书的密钥和可嵌入在客户端上接受的根证书中的根证书,并用于验证低级证书以检查它们。是有效的。自签名仅表示您是自己的CA。每当创建自签名证书时,您都会创建一个ca,然后使用该CA对站点证书进行签名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.