大佬教程收集整理的这篇文章主要介绍了node.js – 高效地终止大量SSL连接,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
但是,我们意识到我们还没有使用SSL进行任何测试,因此查看了许多SSL选项.很明显,在代理服务器上终止SSL连接是理想的,因为代理服务器可以检查流量并插入诸如X-ForWARD-For的头,以便服务器知道请求来自哪个IP.
所以我研究了一些解决方案,如Pound,stunnel和stud,所有这些解决方案都允许终止443上的进入连接,然后传递到端口80上的HAProxy,然后将连接传递到Web服务器上.不幸的是,我发现,向c1.medium(高cpu)实例上的SSL终端代理服务器发送流量很快地消耗了所有的cpu资源,而且每秒只有50个请求.我尝试使用上面列出的所有三个解决方案,并且所有这些都完全相同,我假设他们都依赖于OpenSSl.我尝试使用一个64位非常大的高cpu实例(c1.xlargE),发现性能只有成本线性缩放.所以根据EC2的定价,我需要每秒支付大约600p / m的200个SSL请求,而不是每秒2000个非SSL请求的$60p / m.当我们开始计划每秒接收1,000或10,000个请求时,前者的价格在经济上变得非常不可行.
我还尝试使用Node.js的https服务器终止SSL,性能与Pound,stunnel和stud非常相似,所以没有明确的优势.
所以我希望有人可以帮忙,建议我如何解决这个可笑的成本,我们必须吸收提供SSL连接.我听说SSL硬件加速器提供了更好的性能,因为硬件设计用于SSL加密和解密,但是正如我们目前在所有服务器上使用Amazon EC2一样,使用SSL硬件加速器不是一个选择,除非我们有一个单独的数据中心与物理服务器.如果亚马逊,谷歌,Facebook可以通过SSL提供所有的流量,那么这样的成本如此之高,我就很难想像.那里必须有一个更好的解决方案.
任何建议或意见将不胜感激.
谢谢
马特
不是所有的TLS密码套件都是相同的,有些比其他硬件更高的cpu成本,无论是从密钥交换还是密码本身.
根据使用的软件,应该有一种方法来指定服务器接受的密码字符串(也是使服务器坚持使用该方法).对于OpenSSL,这些工作方式如下:http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS
如果你要加快速度,至少要确保你不使用采用Diffie-HellmAnn(非椭圆曲线类型)密钥交换的密码.
要使用DH密钥交换来禁用密码套件,请确保字符串包含!DH在某个时间点.
您可以测试什么字符串导致可用的密码,例如openssl ciphers -v’HIGH:!aNULL:!DH:!ECDH’.
该字符串禁用正常的Diffie-Hellman以及椭圆曲线Diffie-HellmAnn密钥交换.这可能只是离开RSA密钥交换,具体取决于您的OpenSSL版本.
关于密码,你应该测试你想要的EC2硬件.没有硬件加速,你应该更喜欢RC4超过AES128超过AES256超过任何其他,at least according to this benchmark.
我还建议阅读this wonderful post,特别是启发性的第一张图,显示了DH对TLS握手性能的影响.
最后,确保使用TLS会话缓存.这也节省了一些cpu.
以上是大佬教程为你收集整理的node.js – 高效地终止大量SSL连接全部内容,希望文章能够帮你解决node.js – 高效地终止大量SSL连接所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。