https - 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
?
解决方案
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。
推荐阅读
- aws-lambda - 在 sam local invoke 中递归调用 lambda
- c# - 如何通过 jquery ajax 使用 FormData() 发送对象
- flutter - 当多个执行程序并行构建 Flutter 应用程序时,Jenkins 执行程序崩溃
- html - 隐藏菜单并对页面的每一项进行绝对定位
- pycharm - 为什么打印功能在 Pycharm 中显示错误?
- javascript - 调用堆栈是描述函数如何处理的模型。变量赋值、if 语句和循环是否有类似的模型?
- java - 通过 HTMLUnit 使用 Java 进行身份验证时遇到问题。调试问题
- python-2.7 - 发送 SES 模板电子邮件返回“模板数据在尝试传递 TemplateData 中的值时无效
- amazon-web-services - 请求的 URL 返回错误:403,AWS Server less: Amplify app to CodeCommit
- c++ - 我在使用 boost:asio 时是否偏执?