我正在使用 socket.io 建立一个网络聊天
为了通过 https 在端口 3000 上进行通信,我需要传递我的 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);
答案1
这是您在自己的系统上运行的代码。如果您不信任它,则不要授予它访问机密的权限。如果您信任它,则继续。
除了花钱对代码进行全面安全审计外,你对此无能为力。你应该考虑一下,是的,虽然你的 TLS 密钥确实是秘密的,但它可能不是你将委托给此代码的唯一私人信息。你信任它来管理全部您的数据是否正确,而不仅仅是您的密钥?
简而言之,只有您可以确定是否足够信任 socket.io 代码以允许其访问秘密信息。
如果您决定不信任 socket.io 来保护您的机密,那么也许您可以在 socket.io 前面使用 nginx 作为反向代理,并且 nginx 可以处理 TLS 终止。当然,您需要问一个问题:您信任 nginx 吗?