如何在 node.js 应用程序中使用私有安全连接?
How to use a private secure connection in a node.js application?
我已经建立了一个私有云集成>基本安全连接,但是为了use/access我必须使用相互TLS 在我的 node.js 应用程序中(它也在 BlueMix 上)。
我看到这个 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(本地)发生了什么,似乎连接是 refused/denied。我真的不知道我应该如何处理从 BlueMix 下载的不同证书。如果有人能提供帮助,我将不胜感激。
Cloud Integration 当前不支持到也使用 TLS 或 HTTPS 的后端的相互 TLS。您需要允许通过 HTTP 访问您的应用,以便 Cloud Integration Mutual TLS 正常运行。
执行此操作后,您应该会看到连接到达后端。
您链接的博客 post 是针对 Secure Gateway 的,但听起来您正在使用云集成服务。如果您已经成功创建并连接了基本连接器并创建了私有端点,下面的 node.js 脚本应该允许您向服务器发出获取请求。
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()
我已经建立了一个私有云集成>基本安全连接,但是为了use/access我必须使用相互TLS 在我的 node.js 应用程序中(它也在 BlueMix 上)。
我看到这个 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(本地)发生了什么,似乎连接是 refused/denied。我真的不知道我应该如何处理从 BlueMix 下载的不同证书。如果有人能提供帮助,我将不胜感激。
Cloud Integration 当前不支持到也使用 TLS 或 HTTPS 的后端的相互 TLS。您需要允许通过 HTTP 访问您的应用,以便 Cloud Integration Mutual TLS 正常运行。
执行此操作后,您应该会看到连接到达后端。
您链接的博客 post 是针对 Secure Gateway 的,但听起来您正在使用云集成服务。如果您已经成功创建并连接了基本连接器并创建了私有端点,下面的 node.js 脚本应该允许您向服务器发出获取请求。
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()