首页 > 解决方案 > ca 和 cert 的区别

问题描述

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

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

证书:

PEM 格式的证书链。每个私钥应提供一个证书链。每个证书链应由提供的私钥的 PEM 格式证书组成,然后依次是 PEM 格式的中间证书(如果有),并且不包括根 CA(根 CA 必须预先为对等方所知,见ca)。当提供多个证书链时,它们不必与它们的私钥在 key 中的顺序相同。如果没有提供中间证书,对端将无法验证证书,握手将失败。

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

标签: httpsopensslcertificate

解决方案


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

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

你可以发布文件,除了privkey.pem应该是私人的吗?

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

通常它是这样的:

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

推荐阅读