Node.js – 在内部CA中使用https.request()

我该如何获取https.request()来信任我的内部签名服务器证书。 以下是我在v0.10.25中运行的代码的一个简单示例:

var options = { hostname: 'encrypted.mydomain.local', port: 443, path: '/', method: 'GET' }; var https = require('https') https.request(options) 

我在一个Windows系统上运行这个系统,我的内部根CA在系统级信任,但是每当我提出这样的请求,我就会得到exception

 events.js:72 throw er; // Unhandled 'error' event ^ Error: CERT_UNTRUSTED at SecurePair.<anonymous> (tls.js:1370:32) at SecurePair.EventEmitter.emit (events.js:92:17) at SecurePair.maybeInitFinished (tls.js:982:10) at CleartextStream.read [as _read] (tls.js:469:13) at CleartextStream.Readable.read (_stream_readable.js:320:10) at EncryptedStream.write [as _write] (tls.js:366:25) at doWrite (_stream_writable.js:223:10) at writeOrBuffer (_stream_writable.js:213:5) at EncryptedStream.Writable.write (_stream_writable.js:180:11) at write (_stream_readable.js:583:24) 

对于更多的细节,这一切都发生在我试图用于身份validation的node-atlassian-crowd模块中

您需要添加ca: cafile.pem行到您的选项。 有关更多详细信息,请参阅http://nodejs.org/api/https.html#https_https_request_options_callback

相关部分:

还可以指定tls.connect()中的以下选项。 然而,一个globalAgent默默地忽略了这些。

pfx:用于SSL的证书,私钥和CA证书。 默认为空。

密钥:用于SSL的私钥。 默认为空。

密码:私钥或pfx的密码string。 默认为空。

证书:使用公共x509证书。 默认为空。

ca:一个授权证书或授权证书数组,用于检查远程主机。

在应用程序启动期间,请使用类似于var casigningcert = fs.readFileSync('keys/ca-certsigning-cert.pem')读取CA的证书文件,然后在选项中稍后使用它,应该看起来如下所示:

 var options = { hostname: 'encrypted.mydomain.local', port: 443, path: '/', method: 'GET', ca: casigningcert }; 
Interesting Posts