我正在使用socket.iobuild立networking聊天
为了在端口3000通过https进行通信,我需要传递我的ssl密钥和证书文件。
Socket.io是一个开放源代码,我不知道它是如何可靠地访问像我的证书和密钥文件这样的安全文件。
这是来自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);
这是你在自己的系统上运行的代码。 如果你不信任它,那就不要给它秘密。 如果你信任它,那么继续。
对代码进行完整的安全审计的代价并不多,您可以做的事情不多。 你应该考虑,是的,虽然你的TLS密钥确实是秘密的,但它可能不是唯一的私人信息,你将委托给这个代码。 你相信它正确地pipe理你所有的数据,而不仅仅是你的密钥?
总之,只有你可以确定你是否信任socket.io代码,足以让它访问秘密信息。
如果你决定不信任socket.io和你的秘密,那么也许你可以使用nginx作为socket.io前面的反向代理,而nginx可以处理TLS终止。 当然那么你需要问这个问题:你相信nginx吗?