nodejs中使用的默认CA证书在哪里?

我连接到一个服务器,证书由我自己的CA签名,CA的证书已经安装到系统的钥匙串中。

openssl s_client -connect some.whereVerify return code: 0 (ok)

但我不能连接nodejs的tls / https模块,它会失败, Error: SELF_SIGNED_CERT_IN_CHAIN

但连接到一个正常的服务器(即google.com:443)工作正常。

似乎nodejs的openssl不与系统的openssl共享相同的钥匙串。

但我不能find它在哪里。 我试着用SSL_CERT_DIR覆盖,但似乎没有工作。

顺便说一句:我可以通过设置NODE_TLS_REJECT_UNAUTHORIZED=0绕过服务器validation,但这不够好;)

我使用OSX 10.8.3与OpenSSL 0.9.8r,节点v0.9.8

如果你用tls.connect使用tls模块 (看上去就像你),你可以在你想要信任的证书的string或缓冲区的数组中select一个ca参数。

默认的根证书是静态的并被编译成节点二进制文件。

https://github.com/nodejs/node/blob/v4.2.0/src/node_root_certs.h