Tag: ssl

nodejs中的SSL错误

我试图通过节点https.request()获取网页。 这样做会导致错误被我的代码logging下来。 使用节点请求模块具有相同的结果: 请求问题:140398870042432:错误:140773F2:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报意外消息:s23_clnt.c:658: 以下指出正在使用错误的SSL版本,但我找不到更改版本的方法: curl error:“sslv3 alert unexpected message” 。 从我的terminal使用curl会返回一个响应,就像在浏览器中inputURL一样(这是一个login页面)。 我的代码如下。 var request = require('request') request.get("https://icmserver.wit.ie/balance", function(err, res, body) { if (err) { return console.log(err) } return body; }); 有没有人有任何想法可能发生在这里?

避免在TLS客户端中发送TLS_EMPTY_RENEGOTIATION_INFO_SCSV密码Hello

Node.js默认发送TLS_EMPTY_RENEGOTIATION_INFO_SCSV密码,以防止POODLE攻击 。 我试图通过用自定义密码列表覆盖TLS密码来避免发送这种密码(尽pipe这可能构成安全风险)。 但是,无论我做什么,Node.js都会一直发送TLS_EMPTY_RENEGOTIATION_INFO_SCSV密码。 我试图故意避免发送这个密码来模仿Firefox / Chrome的TLS协商。 这里是我用来修改和检查哪些密码节点发送的代码: var request = require('request'); var ciphers = [ 'ECDHE-ECDSA-AES128-GCM-SHA256', 'ECDHE-RSA-AES128-GCM-SHA256', 'ECDHE-ECDSA-AES256-SHA', 'ECDHE-ECDSA-AES128-SHA', 'ECDHE-RSA-AES128-SHA', 'ECDHE-RSA-AES256-SHA', 'DHE-RSA-AES128-SHA', 'DHE-RSA-AES256-SHA', 'AES128-SHA', 'AES256-SHA', 'DES-CBC3-SHA' ].join(':'); var options = { ciphers: ciphers, secureProtocol: 'TLSv1_2_method', url: 'https://www.howsmyssl.com/a/check' }; request(options, function (error, response, body){ if (!error) { console.log(body); } else { console.log(error); } }); 有什么办法可以禁止在Node.js中发送这个密码吗?

Facebook Messenger API“URL无法validation”

我试图设置Facebook信使API,当我尝试添加WebHook时,出现此错误: 该url无法validation。 回叫validation失败,出现以下错误:curl_errno = 60; curl_error = SSL证书问题:无法获取本地签发者证书; HTTP状态码= 200; HTTP消息=连接已build立 我已经使用教程中提供的代码设置了我的NodeJS服务器。 这是url: https : //stackoverload.me/chatter/webhook 编辑这里的决议(有人想看代码): var express = require('express'); var fs = require('fs'); var https = require('https'); var app = express(); app.use(express.static('public')); // SSL https.createServer( { ca: fs.readFileSync(__dirname + '/server.ca'), key: fs.readFileSync(__dirname + '/server.key'), cert: fs.readFileSync(__dirname + '/server.cert') } , app).listen(443, function() { […]

WebSocket服务器不支持SSL

我有一个使用websockets的工作聊天应用程序。 我想更进一步,并在我的连接上启用encryption,但是当我使用https连接到http服务器时,我的连接开始失败。 我在我的所有网站(在同一顶级域名(TLD)下提供了自签名证书,这意味着它是通配证书)。 我可以确认这是一个有效的证书,所以问题不应该在那里。 这是什么工作(未encryption) var webSocketServer = require('websocket').server; var http = require('http'); var server = http.createServer(function() {}); server.listen(webSocketsServerPort, function () { log("system", "Server is listening on port " + webSocketsServerPort); }); var wsServer = new webSocketServer({ httpServer: server }); 现在我可以连接到ws://my.domain:port 。 这是不行的 var webSocketServer = require('websocket').server; var http = require('https'); var fs = require('fs'); […]

安装根证书到Node.js(HTTPS客户端)

我想用Node.js作为客户端通过HTTPS连接到内部公司服务器。 如何将我的内部根证书安装到Node.js中,以便证书validation成功? 我不想禁用证书validation。

使用StartSSL证书在Mac OSX上的Node.js上启动HTTPS时出错

我正在拆分头发试图使用StartSSL证书运行HTTPS服务器。 我从他们那里获得了所有必要的文件,并通过将它们传递给createServer参数来使用它们: var options = { ca: FS.readFileSync('sub.class1.server.ca.pem'), key: FS.readFileSync('ssl.key'), cert: FS.readFileSync('ssl.crt') }; 这是我得到的错误。 Error: error:0906D06C:PEM routines:PEM_read_bio:no start line at Object.createCredentials (crypto.js:87:31) at HTTPSServer.Server (tls.js:914:28) at HTTPSServer.Server (https.js:33:14) at HTTPSServer.HTTPSServer (/Users/myUserName/node_modules/connect/lib/https.js:34:16) at new HTTPSServer (/Users/myUserName/node_modules/express/lib/https.js:38:23) at Object.createServer (/Users/myUserName/node_modules/express/lib/express.js:43:12) at Object.<anonymous> (/Users/myUserName/Sites/node.js/https/app.js:12:36) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) 我想也许我应该把证书转换成PEM。 但是运行: openssl x509 -in […]

如何设置NodeJS的einaros / ws模块接受wss(安全的ws)连接?

我正在使用NodeJS的eniaros / ws模块在iOS应用程序和使用web套接字的NodeJS服务器之间进行实时通信。 该应用程序运行良好,但现在我必须使用wss保护服务器和iOS应用程序之间的通信。 我有我的Rapid SSL证书和密钥,我在服务器上使用以下代码: var fs = require('fs'); var cfg = { ssl: true, port: 8081, ssl_key: 'key.key', ssl_cert: 'cert.crt' }; var httpServ = ( cfg.ssl ) ? require('https') : require('http'); var app = null; // dummy request processing var processRequest = function( req, res ) { res.writeHead(200); res.end("All glory to WebSockets!\n"); }; […]

HTTPSredirect仅在重新加载页面时起作用

我在我的页面上安装了一个SSL证书,该证书运行一个Node.js + Express应用程序,configurationExpress服务器始终强制redirect到HTTP,一切正常,除了httpsredirect只适用于页面重载或者回车键再次按下。 我logging了一个gif来显示发生了什么: http://recordit.co/uBiW3bcQCM 这是我的快速configuration。 var express = require('express'); var path = require('path'); var serveStatic = require('serve-static'); var forceSsl = function (req, res, next) { if (req.headers['x-forwarded-proto'] !== 'https') { return res.redirect(['https://', req.get('Host'), req.url].join('')); } return next(); }; app = express(); app.use(serveStatic(__dirname)); if(process.env.NODE_ENV === 'production') { app.use(forceSsl); } app.all('/*', function(req, res) { res.sendfile('index.html'); }); […]

如何创build安全(TLS / SSL)Websocket服务器

我正在使用node.js的WS websocket库。 目前我正在运行ws服务器。 现在我想通过使用安全连接来保证这个连接,即通过实现wss协议和库支持TLS连接。 我search了一下,发现这很简单:wss和这个wss用自签名证书 。 两者都不是很详细,第二个链接上的文章用自签名证书描述了wss。 我想知道的是,如果创build自签名证书并将其部署到我的生产环境中,还是需要购买证书,而我们需要在创buildHTTPS服务器时执行该操作?

终止大量SSL连接的成本效益

我最近设置了一个基于Node.js的web套接字服务器,经过testing,它可以在一个小的EC2实例(m1.small)上每秒处理大约2000个新的连接请求。 考虑到m1.small实例的成本以及将多个实例放在支持WebSocket的代理服务器(如HAProxy)后面的能力,我们对结果非常满意。 但是,我们意识到我们还没有使用SSL进行任何testing,因此查看了许多SSL选项。 很明显,在代理服务器上终止SSL连接是理想的,因为代理服务器可以检查stream量并插入诸如X-Forward-For之类的头部,以便服务器知道请求来自哪个IP。 所以我研究了一些解决scheme,比如Pound,stunnel和stud,所有这些都允许443上的传入连接被终止,然后通过80端口上的HAProxy传递到Web服务器。 不幸的是,我发现在c1.medium(High CPU)实例上向SSL终止代理服务器发送stream量很快就消耗了所有的CPU资源,并且每秒钟只有50次左右的请求。 我尝试过使用上面列出的全部三种解决scheme,并且他们都执行了大致相同的操作,而我仍然使用OpenSSL。 我尝试使用64位非常大的高CPU实例(c1.xlarge),发现性能只能随成本线性缩放。 所以基于EC2定价,我需要支付每秒200个SSL请求的大约600美元/米,而不是每秒2000个非SSL请求的60美元/米。 当我们开始计划每秒钟接受1,000或10,000次请求时,以前的价格变得经济上不可行。 我也尝试使用Node.js的https服务器终止SSL,性能与Pound,stunnel和stud非常相似,所以没有明显的优势。 所以我希望有人可以帮忙的是build议我如何解决这个荒谬的代价,我们必须吸收以提供SSL连接。 我听说SSL硬件加速器提供了更好的性能,因为硬件devise用于SSLencryption和解密,但是由于我们目前在所有服务器上使用Amazon EC2,使用SSL硬件加速器不是一个select,除非我们有单独的数据以物理服务器为中心。 我只是努力想知道,如果亚马逊,Google,Facebook这样的成本如此之高,可以通过SSL提供所有stream量。 那里一定有更好的解决办法。 任何意见或想法将不胜感激。 谢谢Matt