设置多个 HTTPS 服务器侦听 Node 中的同一端口
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
,则默认情况下节点将创建一个接受 TLS 1.0、TLS 1.1 和 TLS 1.2 连接的 https 服务器。
示例服务器:
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(最新稳定版)上测试。
通过不指定协议,以下块将生成使用 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
,则默认情况下节点将创建一个接受 TLS 1.0、TLS 1.1 和 TLS 1.2 连接的 https 服务器。
示例服务器:
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(最新稳定版)上测试。