如何在node.js应用程序中使用私有安全连接?

我已经build立了私有云集成>基本安全连接,但是要使用/访问它,我必须在我的node.js应用程序(也在BlueMix上)中使用相互的TLS
我见过这个post: https : //developer.ibm.com/bluemix/2015/04/17/securing-destinations-tls-bluemix-secure-gateway/它描述了一种使用私人安全连接的方法。

但是我想要做的是发送一个HTTPS请求到安全连接,以便它到我的后端。 在node.js中,我有一个处理用户操作的HTTP服务器,我使用下面的代码来发出HTTPS请求:

var https = require('https'); var fs = require('fs'); var options = { host: cloud_ip, port: cloud_port, path: '/path_to_resource', method: 'POST', cert: fs.readFileSync('<endpoint>-basic-client-cert.pem'), key: fs.readFileSync('<endpoint>-basic-private-key'), ca: fs.readFileSync('DigiCertCA2.pem'), agent: false, }; var req = https.request(options, callback); req.on('error', function(e) { io.emit('message', 'Error: ' +JSON.stringify(e)); }); req.end() 

而我从后端得不到回应,我试图监视Wireshark(本地)发生的事情,似乎连接被拒绝/拒绝。 我不知道我应该如何处理从BlueMix下载的不同证书。 如果有人能帮忙,我会很感激。

云集成目前不支持TLS或HTTPS的后端。 您需要允许通过HTTP访问您的应用程序,以便Cloud Integration Mutual TLS正常运行。

一旦你这样做,你应该看到连接打到你的后端。

您链接的博客文章是针对Secure Gateway的,但听起来您正在使用Cloud Integration服务。 如果您已经成功创build并连接了您的基本连接器并创build了您的私有端点,则下面的node.js脚本应该允许您向服务器执行get请求。

 var https = require('https'); var fs = require('fs'); var options = { host: '<ip on cloud integration endpoint>', port: <port given by cloud integration on endpoint>, path: '/pathToApi', method: 'GET', cert: fs.readFileSync('myCertfile.pem'), key: fs.readFileSync('myKeyFile'), agent: false, rejectUnauthorized: false }; var req = https.request(options, function(res){ res.on('data', function(d){ process.stdout.write(d); }); }); req.end()