Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 设置多个HTTPS服务器在节点中的同一端口上侦听_Node.js_Express_Https_Node Http Proxy - Fatal编程技术网

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

Node.js 设置多个HTTPS服务器在节点中的同一端口上侦听,node.js,express,https,node-http-proxy,Node.js,Express,Https,Node Http Proxy,通过不指定协议,以下块将导致使用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。为此,我需要将secur

通过不指定协议,以下块将导致使用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\u方法

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的最佳方式是什么?答案可能在模块中,但我很难将文档应用到我的用例中。请注意,我使用不同的子域来区分流量。

如果选项中未定义
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测试(将失败,默认禁用):

TLSv1的测试(将起作用):

TLSv1.1的测试(将起作用):

TLSv1.2的测试(将起作用):



在node.js版本5.3.0和5.5.0(最新版本)上测试。

如果选项中未定义
secureProtocol
,则默认情况下,node将创建一个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测试(将失败,默认禁用):

TLSv1的测试(将起作用):

TLSv1.1的测试(将起作用):

TLSv1.2的测试(将起作用):



在node.js版本5.3.0和5.5.0(最新版本)上测试。

Ah…我没有意识到默认情况下支持所有三个版本。谢谢啊…我没有意识到默认情况下支持所有三个版本。谢谢
curl --tlsv1.0 https://localhost:8000 -k
curl --tlsv1.1 https://localhost:8000 -k
curl --tlsv1.2 https://localhost:8000 -k