2016-11-05 2 views
2

Я использую nodejs в Ubuntu. и я хочу отключить SSL 3.0 и TLS v1.0.Как отключить SSL 3.0 и TLS 1.0 в nodejs

Вот мой код

var constants = require('constants') 
    , https = require('https') 
    , path = require('path') 
    , tls = require('tls') 
    , fs = require('fs'); 
var sslOptions = { 
    key: fs.readFileSync('/etc/ssl/private/private.key'), 
    secureProtocol: 'SSLv23_server_method', 
    secureOptions: constants.SSL_OP_NO_SSLv3, 
    secureOptions: constants.SSL_OP_NO_TLSv1, 
    cert: fs.readFileSync('/etc/ssl/certs/STAR_mycert.crt'), 
    ca: [ 
      fs.readFileSync('/etc/ssl/certs/AddTrustExternalCARoot_1.crt'), 
      fs.readFileSync('/etc/ssl/certs/AddTrustExternalCARoot_2.crt'), 
      fs.readFileSync('/etc/ssl/certs/AddTrustExternalCARoot_3.crt') 
     ], 
    //ca: fs.readFileSync('/etc/ssl/certs/AddTrustExternalCARoot.crt'), 
    requestCert: false, 
    rejectUnauthorized: false 
}; 

Теперь, когда я проверить свой сайт на DigiCert я получил следующий вопрос

enter image description here

любая идея, как это сделать?

ответ

4

Я не знаю много о node.js, но я думаю, что вы последний secureOptions просто переопределяет первый, потому что вы не можете иметь один и тот же ключ несколько раз в словаре. Поскольку основной стек TLS (OpenSSL) требует, чтобы параметры в сочетании с побитового или попробовать следующее вместо:

secureOptions: constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_TLSv1, 
+0

Вау, это сработало для меня. Большое спасибо .. Можете ли вы сказать мне constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_TLSv1, что такое | Вот? –

+0

@AnkitaKashyap: Опции в OpenSSL - это битовые наборы. '' 'Является поразрядным или означает, что результирующий набор бит имеет все установленные биты, которые находятся в любом из наборов входных данных. См. Также https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators –

+0

Большое спасибо. вы спасли меня –

0

Принятый ответ документированы. Начиная с Node.js v6.3.0, внутри криптографического модуля должен использоваться атрибут констант documented.

... 
const { constants } = require('crypto') 
https.createServer({ 
    secureOptions: constants.SSL_OP_NO_TLSv1 
}, app).listen(443) 
... 
Смежные вопросы