节点证书存储,节点是否只读取硬编码的证书列表?

Srl*_*rle 14 javascript ssl https node.js

经过一段时间的努力,有没有办法将新证书添加到证书节点信任列表中?

似乎节点信任存储在硬编码证书列表中的证书:https://github.com/nodejs/node/blob/master/src/node_root_certs.h

因此,例如,节点应用程序应与https://foo-bar-baz.com该使用自签名证书进行通信,从而导致对该域的请求返回如下内容:
[RequestError: Error: certificate has expired]

显然,如何在java中修复此问题是将https://foo-bar-baz.com证书添加到$JAVA_HOME/lib/security/cacerts.

节点是否从提到的硬编码列表中读取证书?或者它也可以从一些OS证书商店读取?如果只是来自硬编码列表:

  1. 为什么?以这种方式实施它的原因是什么?
  2. 如果某些证书被伪造,那么只能等待下一个节点版本?
  3. 如果想要添加自签名证书,不可能?

(可以编辑可能的硬编码列表来添加/删除证书,但我对改变节点源感到不舒服,同样来自类似的问题节点的证书存储在哪里?可以在做请求时添加证书但它不在范围内这个问题.类似的问题是在2年前发布的,从我调查的情况来看今天是一样的)

Sco*_*and 3

您将它们称为硬编码的“证书列表”...该列表是证书授予机构,而不是证书...当前的行为是有充分理由的故意...如果 Web 服务器(nodejs)呈现用于未经验证的玩具自签名证书的绿色挂锁

我建议您使用更好的技术来合成您的证书,这将为您提供有效的证书,从而启用绿色挂锁......

运行本教程,为您的域获取有效的证书(免费),这些证书已准备好用于生产...还有 gr8 用于踢轮胎:https://letsecure.me/secure-web-deployment-with-lets-encrypt-and-nginx /

  • 关于列表,但它们又是属于证书颁发机构(CA)本身的“证书​​”(如果是根,则由他们自己进行数字签名),对吗?其次,当然,在生产环境中为未经验证的自签名证书呈现绿色挂锁是不好的,但是可以再次讨论是否应该像您所说的那样完全禁止它,或者强烈不建议这样做。无论如何,有许多网站都在自签名证书上运行。我不能接受你的答案的原因是我没有问如何获得有效的证书 (2认同)