Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 其中是节点';谁的证书商店?_Macos_Node.js_Ssl_Ssl Certificate - Fatal编程技术网

Macos 其中是节点';谁的证书商店?

Macos 其中是节点';谁的证书商店?,macos,node.js,ssl,ssl-certificate,Macos,Node.js,Ssl,Ssl Certificate,我正在向具有自签名证书的服务器发出https请求(使用请求模块)。如果我没有指定strictSSL:false作为选项,则会抛出错误 此证书在我的操作系统(OSX)上已经受信任,这样Chrome在从该服务器访问网页时不会抛出错误 我知道不同的应用程序/环境可能有自己的证书存储。Firefox有自己的JVM,例如,JVM通常位于$JAVA_HOME/jre/lib/security/cacerts(在OSX上) 我的问题是,节点在哪里查找其受信任的CA?有这样一个概念吗?我想在那里添加我的自签名证

我正在向具有自签名证书的服务器发出https请求(使用请求模块)。如果我没有指定
strictSSL:false
作为选项,则会抛出错误

此证书在我的操作系统(OSX)上已经受信任,这样Chrome在从该服务器访问网页时不会抛出错误

我知道不同的应用程序/环境可能有自己的证书存储。Firefox有自己的JVM,例如,JVM通常位于$JAVA_HOME/jre/lib/security/cacerts(在OSX上)


我的问题是,节点在哪里查找其受信任的CA?有这样一个概念吗?我想在那里添加我的自签名证书以用于开发。

那里没有存储。您可以将
ca
选项传递给https请求,告诉它您信任什么ca

发件人:

还可以指定
tls.connect()
中的以下选项。 但是,
globalAgent
会默默地忽略这些

  • ca
    :要检查的授权证书或授权证书数组 远程主机无法访问
要指定这些选项,请使用自定义
代理

var options = {
  ...
  ca: CA or [array of CAs]
  ...
};

options.agent = new https.Agent(options);

var req = https.request(options, function(res) {

Ref:

看起来虽然没有存储,但是源代码中内置了一个默认的CA列表

我的搜索最终让我找到了离商店最近的东西,node.js支持的CA文件:

因此,虽然它确实没有在系统承载的CA上进行查找,并且本身没有“存储”,但它有一个接受的默认CA列表


正如@Joe和@damphat所提到的,您可以使用Agent.options.ca属性添加自己的属性,不幸的是,这种解决方法在我的情况下并不实用。

我不知道它们存储在哪里,但是您可以将CA添加到此
https.globalAgent.options.CA=您的CA
,因为7.3版本中有一个更接近于通过系统添加任意CA的版本