首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在node.js中禁用TLS1.1?

在node.js中禁用TLS1.1?
EN

Stack Overflow用户
提问于 2012-05-27 21:08:54
回答 2查看 3.8K关注 0票数 5

我目前在Ubuntu12.04上遇到了一个已知的OpenSSL问题。这个问题已经在Debian中解决了,我希望它在Ubuntu中也能很快得到解决。然而,与此同时,我需要一个变通方法。

因此,有没有可能在节点中禁用TLS1,并拥有与tls1开关等效的东西:

代码语言:javascript
运行
复制
openssl s_client -tls1 -connect evernote.com:443

这里有一个简单的Node.js脚本来复制这个问题(在带OpenSSL 1.0.1的Ubuntu12.04上)

代码语言:javascript
运行
复制
var https = require('https');
https.get({
    host: 'www.evernote.com',
    path: '/',
    port: 443
  }, function (res) {
    console.log('Success!');
  });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-28 05:54:10

documentation和源代码(12)来看,应该可以将一个options对象传递给request,其中包含如下内容

代码语言:javascript
运行
复制
options = { secureProtocol: 'TLSv1_method' }

为了对这个特定的连接使用TLSv1 (就是这样)。

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

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

票数 5
EN

Stack Overflow用户

发布于 2013-05-28 21:57:14

我遇到了一个bug,我无法通过节点通过ssl连接到livefilestore.com。以下是修复它的方法:

代码语言:javascript
运行
复制
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握手,但失败了。真奇怪。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10774226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档