ca 和 cert 之间的区别

sin*_*bar 1 https openssl certificate

我尝试使用节点https api来设置https服务器,在api文档中:有两个参数让我感到困惑。 加利福尼亚州

(可选)覆盖受信任的 CA 证书。默认是信任由 Mozilla 管理的知名 CA。当使用此选项显式指定 CA 时,Mozilla 的 CA 将被完全替换。该值可以是字符串或缓冲区,或者字符串和/或缓冲区的数组。任何字符串或缓冲区都可以包含多个连接在一起的 PEM CA。对等方的证书必须可链接到服务器信任的 CA,以便对连接进行身份验证。当使用不可链接到知名 CA 的证书时,必须将证书的 CA 明确指定为受信任的 CA,否则连接将无法进行身份验证。如果对等方使用的证书与默认 CA 之一不匹配或链接到,请使用 ca 选项提供对等方证书可以匹配或链接到的 CA 证书。对于自签名证书,该证书是其自己的 CA,并且必须提供。对于 PEM 编码的证书,支持的类型为“TRUSTED CERTIFICATE”、“X509 CERTIFICATE”和“CERTIFICATE”。

证书:

PEM 格式的证书链。每个私钥应提供一个证书链。每个证书链应包含所提供私钥的 PEM 格式的证书,后跟 PEM 格式的中间证书(如果有),按顺序排列,并且不包括根 CA(根 CA 必须是对等方预先知道的,参见约)。当提供多个证书链时,它们的顺序不必与其私钥在 key 中的顺序相同。如果未提供中间证书,对等方将无法验证证书,握手将失败。

他们之间有什么区别?正如我所想,https系统中只有一个客户端pem和一个密钥pem。为什么需要更多像 ca 和 cert 这样的东西?我通过 certbot 生成 pem,生成了四个文件:cert.pem chain.pem fullchain.pem privkey.pem. 两者有何不同cert.pem chain.pem fullchain.pem

Dan*_*con 5

cacert的颁发者。因此,当我信任ca但不知道您的证书时,我可以信任它,因为它是由可信来源颁发(签名)的。

我通过certbot生成pem,生成了四个文件

你能发布除了那些应该是私人的文件之外的privkey.pem文件吗?

cert.pem chain.pem fullchain.pem 有什么不同?

通常它是这样的:

  • cert.pem包含证书 - 公钥和元数据(颁发者、序列号、主题、SAN、属性和扩展)。
  • privkey.pem包含您的证书的私钥。
  • chain.pem包含您的证书及其颁发者 - 链中可能有更多实例,例如Root CA -> Sub CA -> your cert
  • fullchain.pem包含您的证书以及直到根 ca 的所有 cas。