2016-01-31 18 views
0

監聽同一端口上通過不指定一個協議,以下塊將導致使用TLS 1.2 HTTPS服務器:設置多個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模塊,但我很難將文檔應用到我的用例中。請注意,我使用不同的子域來區分流量。

回答

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); 

您可以用捲曲的命令行測試:

試驗的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(最新穩定)。

+0

啊......我沒有意識到所有三個版本都默認支持。謝謝! –

相關問題