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

Pac*_*ace 67 ssl ssl-certificate

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

我有一个客户端和一个服务器.我只是想验证我与服务器的连接,而不是试图与其他人建立信任,所以我不关心用真正的CA签名.

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

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

第二种选择似乎是一个更简单的过程.这应该还行吗?

Bru*_*uno 59

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

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

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

由此,您可以在最终实体证书(您要为用户或服务器验证的证书)和您信任的CA证书之间构建一系列证书.在您的服务的最终实体证书和您信任的CA证书之间可能存在中间CA证书(由其他CA证书颁发).您不需要在顶部使用根CA(自签名CA证书),但通常情况如此(如果您愿意,可以选择直接信任中间CA证书).

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


Hel*_*ein 52

两个选项都有效,选项2更简单.

当您需要多个证书时,最好选择1(设置您自己的CA).在公司中,您可以设置自己的CA并在所有客户端的根密钥库中安装该CA的证书.然后,这些客户将接受您的CA签署的所有证书.

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

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


小智 5

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

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

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:TRUE, pathlen:0
Run Code Online (Sandbox Code Playgroud)

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

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE
Run Code Online (Sandbox Code Playgroud)