Tag: stunnel

通过sTunnel向服务器发出请求

我有一个运行在通过sTunnelconfiguration的en EC2实例上的小应用程序。 我的sTunnel是这样configuration的 client = no cert = /etc/stunnel/stunnel.pem key = /etc/stunnel/stunnel.pem [proxy] connect = 127.0.0.1:3000 accept = private_ip:1500 我的理解是,我可以发送一个请求到private_ip:1500 ,这将切换到本地主机上运行的进程,但是当我尝试发送一些东西到IP地址时,我得到一个ETIMEDOUT错误。 以下是我提出的要求: #!/usr/bin/env node var net = require('net'); var HOST = 'private_ip'; var PORT = 1500; var client = new net.Socket(); client.connect(PORT, HOST, function() { console.log('CONNECTED TO: ' + HOST + ':' + PORT); }); […]

如何在stunnel后面的node.js / connect应用程序中设置req.connection.proxySecure

我们有一个node.js / express应用程序,位于stunnel后面,用于ssl终止。 我无法弄清楚如何强制安全的会话cookie。 看着会话中间件源: // only send secure session cookies when there is a secure connection. // proxySecure is a custom attribute to allow for a reverse proxy // to handle SSL connections and to communicate to connect over HTTP that // the incoming connection is secure. var secured = cookie.secure && (req.connection.encrypted || […]

终止大量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