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

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

我有一个客户端和一个服务器。 我只是试图validation我的连接到我的服务器,而不是试图build立对其他人的信任,所以我不在乎签署一个真正的CA.

选项1:生成自签名CA( ssCA )并使用它签署证书( C )。 然后,我将ssCA安装到客户端的根密钥库中,并将我的服务器设置为使用证书C.

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

第二种select似乎是一个更简单的过程。 如果仍然有效?

两个选项都是有效的,选项2更简单。

当您需要多个证书时,选项1(build立您自己的CA)是可取的。 在公司中,您可以设置自己的CA,并将该CA的证书安装在所有客户端的根密钥库中。 那些客户端将接受您的CA签署的所有证书。

选项2(自我签署没有CA的证书)更容易。 如果你只需要一个证书,那么这就足够了。 将它安装在客户的密钥库中,就完成了。 但是当你需要第二个证书时,你需要在所有的客户端上重新安装。

以下链接提供更多信息: 创build证书颁发机构和自签名SSL证书

首先,关于密钥和证书(关于“CA密钥”)​​之间的区别,在讨论公钥证书(通常是X.509)时使用了3个部分:公钥,私钥和证书。 公钥和私钥组成一对。 您可以使用私钥签名和解密,您可以validation(签名)并使用公钥进行encryption。 公钥旨在分发,而私钥意味着保密。

公开密钥证书是公钥与各种信息(主要是密钥对的所有者的身份,控制私钥的人的身份)之间的组合,该组合使用公钥的发行者的私钥证书。 X.509证书具有主题专有名称和发行者专有名称。 颁发者名称是颁发证书的实体的证书的使用者名称。 自签证书是发行人和主体相同的特殊情况。 通过签署证书的内容(即签发证书),发布者断言其内容,特别是在密钥,身份(主体)和各种属性(可能指示用户的意图或范围证书)。

除此之外,PKIX规范还定义了一个扩展(指定证书的一部分),用于指示证书是否可以用作CA证书,也就是说,它是否可以用作另一证书的颁发者。

由此,您可以在最终实体证书(您要validation的用户或服务器证书)和您信任的CA证书之间build立证书链。 您的服务的最终实体证书与您信任的CA证书之间可能存在中间CA证书(由其他CA证书颁发)。 您不必严格需要顶部的根CA(自签名CA证书),但通常情况下(如果您愿意,可以select直接信任中间CA证书)。

对于您的用例,如果为特定服务生成自签名证书,是否具有CA标志(基本约束扩展名)并不重要。 您需要将其作为CA证书才能颁发其他证书(如果您想构build自己的PKI)。 如果为此服务生成的证书是CA证书,则不会造成任何伤害。 更重要的是你可以configuration你的客户端来信任这个特定的服务器的证书(浏览器应该让你比较容易的做一个明确的例外)。 如果configuration机制遵循PKI模型(不使用特定的例外),由于不需要构build链(只有一个证书),您应该能够直接导入证书作为信任锚的一部分您的客户端,不pipe它是否是CA证书(但这可能取决于客户端的configuration机制)。

您必须始终拥有一个根CA,CA具有一个可用于签署较低级别证书的密钥和一个可embedded客户端接受的根证书中的根证书,并用于validation下级证书以检查它们是有效的。 自签只意味着你是你自己的CA. 每当创build自签名证书时,您都会创build一个ca,然后使用该CA签署站点证书。

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

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

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

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

  X509v3 extensions: X509v3 Basic Constraints: CA:FALSE