将SSL密钥和证书文件传递给Socket.IO安全吗?

我正在使用Socket.IObuild立networking聊天

为了通过HTTPSPort 3000上进行通信,我需要传递我的SSL Key和证书文件。

Socket.IO是一个开源项目,我不知道如何让它能够访问像我的证书和密钥文件这样的安全文件。

以下是来自运行在服务器端的nodeJS

 var fs = require('fs'); var https = require('https'); var express = require('express'); var app = express(); var options = { key: fs.readFileSync('../chat/file.pem'), cert: fs.readFileSync('../chat/file.crt') }; var server = https.createServer(options, app); var io = require('socket.io')(server); 

Socket.IO安全可靠吗? 如果没有,build议如何使其安全?

任何帮助将非常感激。 谢谢。

首先,你必须决定是否信任socket.io。 这是您在服务器上运行的代码。 如果它是stream氓软件,它可以为您的服务器环境做各种事情,而不仅仅是SSL密钥。 所以,这根本不是一个真正的SSL关键问题。 这只是关于你是否信任socket.io的问题。 它被许多其他服务器使用。 如果有一个已知的理由不相信它的代码,这将被公开分享。 所以,我想你可以说,没有广为人知的理由不相信它。

其次,大多数人信任开放源代码项目比信任闭源项目更多,因为源代码可供所有人阅读和学习,这些项目中的任何故意stream氓或恶意代码很可能会被注意到项目的人看到。 而对于封闭的源代码项目,您必须盲目地相信您获得封闭源代码工具的公司的意图和技能。 公开审查封闭的源代码是没有机会的。 我提到这一点是因为你的问题意味着开源代码可能不像其他types的代码那么安全,我不同意这个意思。

第三,你实际上并没有把你的SSL密钥交给socket.io。 您将它们传递给https模块,以便它可以创build您的服务器。 该模块内置到node.js中 所以,在这种情况下,你真的决定是否信任node.js(这也是一个开源项目)。 一旦你的服务器被创build,然后你将已经创build的服务器传递给socket.io模块,这样它就可以附加一个事件监听器。

Socket.IO安全可靠吗?

这没有一个通用的答案。 与几乎所有的安全事物一样,它完全取决于你所要保护的内容以及你想要保护的内容,这取决于你实现的具体细节。

简而言之,socket.io只是一个webSocket顶层的消息传递层。

推荐的方法是什么?

再一次,这没有完全通用的答案。 保护一个socket.io连接的大部分与保护一个web服务器是完全一样的。 保护您的服务器安装并访问它。 使用SSL保护传输。 确保对SSL密钥的访问。 devise您的应用程序智能使用所有这些工具。 找出你想要保护的东西以及你想要保护的东西,并与这方面的专家进行非常详细的安全审查。