【问题标题】:Disabling TLS 1.1 in node.js?在 node.js 中禁用 TLS 1.1?
【发布时间】:2012-05-27 13:08:54
【问题描述】:

我目前在 Ubuntu 12.04 上遇到了 OpenSSL 的一个已知问题。这个问题已经在 Debian 中得到修复,我希望它也能在 Ubuntu 中得到修复。但是,与此同时,我需要一个解决方法。

那么是否可以在 Node 中禁用 TLS1 并拥有相当于 tls1 开关的东西:

openssl s_client -tls1 -connect evernote.com:443

这是一个简单的 Node.js 脚本来复制问题(在 Ubuntu 12.04 w/OpenSSL 1.0.1 上)

var https = require('https');
https.get({
    host: 'www.evernote.com',
    path: '/',
    port: 443
  }, function (res) {
    console.log('Success!');
  });

【问题讨论】:

    标签: node.js ubuntu ssl openssl ubuntu-12.04


    【解决方案1】:

    documentation 和来源(12)来看,应该可以将选项对象传递给request,其中包含类似的内容

    options = { secureProtocol: 'TLSv1_method' }
    

    为了对这个特定的连接使用 TLSv1(仅此而已)。

    默认使用OpenSSL的SSLv23_method,即使用双方可能理解的最高TLS/SSL版本。

    尽管在 OpenSSL 本身中是可能的,但据我所知,在 node.js 中不可能将特定的 TLS 版本(如“使用可能的最高版本,但绝不使用这个”)列入黑名单,必要的标志这样做不会在 node.js 本身中导出。

    【讨论】:

    • 很棒的逆向工程!太糟糕了,我似乎希望能够做我需要做的事情:(你确定它是这样工作的吗?我尝试对secureProtocol使用各种值(SSLv2_methodTLSv1_method),但似乎我得到了同样的错误(Error: socket hang upat SecurePair.error (tls.js:802:15))到目前为止感谢一百万!
    • 我没有让它工作,但我认为这基本上是我们可以使用的可用信息。谢谢!
    • 是的,抱歉,我没有时间进一步调查。如果我设法找出可能出了什么问题,我会在这里发表评论!
    • jsalonen,你弄明白了吗?顺便说一句,选项应该去哪里?在 HttpsOptions 中?还是在哪里?
    • @jsalonen 他们进入了一个新的 https.Agent。
    【解决方案2】:

    我遇到了一个错误,我无法通过节点通过 ssl 连接到 livefilestore.com。这是修复它的原因:

    var https = require('https');
    
    var HTTPS_AGENT = new https.Agent({
     secureProtocol: 'SSLv3_method'     // default is SSLv23_method
    });
    
    var req_opts = {...};
    
    req_opts.agent = HTTPS_AGENT;
    
    https.request(req_opts, function(res) { ... });
    

    有趣的是,我能够使用更新版本的 libopenssl 重现 curl 中的错误,但我的旧盒子没有重现该问题。我能够在 Ubuntu 和 Gentoo 上重现。在尝试使用 curl 时,使用 -2 总是会中断(但不同的是,它不会挂起,只是报告不受支持)并且 -3 从未重现该问题。我不知道这是否相关。如果不指定 -3,它会尝试进行 SSLv3 握手但失败。奇怪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 2017-12-11
      • 2021-04-14
      • 2021-08-12
      • 1970-01-01
      • 2020-11-18
      • 2015-09-20
      • 2021-05-14
      相关资源
      最近更新 更多