节点证书存储,节点仅从硬编码的证书列表中读取

node certificate store, does node read only from hard coded list of certificates?

本文关键字:节点 证书 列表 读取 编码 存储      更新时间:2023-09-26

挣扎了一段时间后,有没有办法添加新的证书到证书节点信任列表?

似乎节点将只信任存储在硬编码证书列表中的证书: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

节点是否只从提到的硬编码列表中读取证书?或者它也可以从某些操作系统证书存储中读取?如果只是从硬编码列表中:

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

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

您称它们为硬编码的"证书列表"......该列表是证书授予机构,而不是证书...目前的行为是故意的,有充分的理由......如果 Web 服务器 (NodeJS) 为未经验证的玩具自签名证书呈现绿色挂锁,那将是非常糟糕的

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

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