繁体   English   中英

在Node中的同一端口上设置侦听多个HTTPS服务器

[英]Setting up multiple HTTPS servers listening on the same port in Node

通过不指定协议,以下块将导致使用TLS 1.2的HTTPS服务器:

var options = {
    key: fs.readFileSync("security/server.key"),
    cert: fs.readFileSync("security/server.crt")
};
https.createServer(options, app).listen(443);

但是,我的一个端点需要充当Fitbit API的订户端点,这需要TLS 1.0。 为此,我需要将secureProtocol设置为TLSv1_method

var options = {
    key: fs.readFileSync("security/server.key"),
    cert: fs.readFileSync("security/server.crt"),
    secureProtocol: "TLSv1_method" // Fitbit subscription API requires TLS 1.0
};
https.createServer(options, app).listen(443);

将TLS 1.0用于一个端点并将TLS 1.2用于所有其他端点的最佳方法是什么? 答案可能在http-proxy模块中,但是我很难将文档应用于我的用例。 请注意,我使用不同的子域来区分流量。

如果未在选项中定义secureProtocol ,则默认情况下,节点将创建一个https服务器,该服务器接受TLS 1.0,TLS 1.1和TLS 1.2上的连接。


示例服务器:

const https = require('https');
const fs = require('fs');

const options = {
  key: fs.readFileSync('default-key.pem'),
  cert: fs.readFileSync('default-cert.pem')
};

https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world\n');
}).listen(8000);

您可以使用curl在命令行中对此进行测试:

测试SSLv3(将失败,默认情况下处于禁用状态):

curl --sslv3 https://localhost:8000 -k

测试TLSv1(可以):

curl --tlsv1.0 https://localhost:8000 -k

测试TLSv1.1(可以):

curl --tlsv1.1 https://localhost:8000 -k

测试TLSv1.2(可以):

curl --tlsv1.2 https://localhost:8000 -k

在node.js版本5.3.0和5.5.0上进行了测试(最新稳定版本)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM