【发布时间】:2016-08-17 12:52:50
【问题描述】:
苦苦挣扎了一阵子,有什么办法可以添加新的 证书节点信任的证书列表?
似乎节点将仅信任存储在硬编码证书列表中的证书: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.comcertificate 添加到$JAVA_HOME/lib/security/cacerts。
节点是否仅从提到的硬编码列表中读取证书?或者它也可以从一些操作系统证书存储中读取? 如果只是来自硬编码列表:
- 为什么?以这种方式实施它的原因是什么?
- 如果某些证书被伪造,只能等待下一个节点版本?
- 如果要添加自签名证书,不可能吗?
(可以编辑可能的硬编码列表以添加/删除证书,但我对更改节点源感到不舒服,同样来自类似问题Where is node's certificate store? 可以在请求时添加证书,但它不在范围内这个问题。类似的问题是在2年前发布的,从我今天调查的情况来看,情况是一样的)
【问题讨论】:
-
看来Node只是使用系统证书存储。
-
Google 上的各种来源
-
哪些来源?链接?我测试了在superuser.com/questions/437330/… 之后添加证书并验证证书已成功添加但节点忽略它
-
我不知道该告诉你什么。节点应将任何本地受信任证书识别为已验证。如果不是,请尝试重新启动等等。
标签: javascript node.js ssl https