2016-04-24 73 views
14

挣扎了一段时间之后,有什么办法可以将新的 证书添加到证书节点信任列表中吗?节点证书存储区,节点只读取硬编码证书列表吗?

看来,节点将信任存储在证书硬编码证书名单: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. 如果要添加自签名证书,不可能?

(一个可以编辑可能硬编码列表中添加/删除证书,但我不会感到舒适的变化节点源,也从类似的问题Where is node's certificate store?一个,而这样做的请求可以添加证书,但它不在范围内类似的问题发布前2年,并从我调查的情况是相同的今天)

+0

看来,Node只是使用系统证书存储。 – PitaJ

+0

从哪里出现? – Srle

+0

Google上的各种来源 – PitaJ

回答

3

你称他们硬编码的“证书列表”...该名单是证书授予机构,而不是证书......当前的行为是有意为之的......如果一个web服务器(nodejs)为未经验证的玩具自签名证书提供绿色挂锁,那将是非常糟糕的

我建议你使用一个更好的方法,通过本教程合成你的证书,这将给你有效的证书,其启用绿色挂锁...

运行得到有效证书(免费),您的域名它们生产做好准备... gr8用于踢轮胎:https://letsecure.me/secure-web-deployment-with-lets-encrypt-and-nginx/

+2

关于列表,但它们又是属于证书颁发机构(CA)本身(如果是root,由它们自己进行数字签名)的“证书”权利?其次,当然,在生产环境中将绿色挂锁渲染为未经验证的自签名证书会很糟糕,但是如果您正在说或者应该强烈不推荐这样做,那么应该再次讨论它应该被禁止。无论如何,许多站点都在自签名证书上运行。我不能接受你的答案的原因是我没有问如何获得有效的证书 – Srle