Macos 其中是节点';谁的证书商店?
我正在向具有自签名证书的服务器发出https请求(使用请求模块)。如果我没有指定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?有这样一个概念吗?我想在那里添加我的自签名证
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的版本