我一直在网上寻找一个简单明了的答案,但大多数解决方案涉及使用Express来为安全连接提供HTTP内容。我更感兴趣的是Node.js和socket.io的安全Web Socket连接(wss)。
我不使用Node.js进行HTTP请求。我使用与Node.js配合工作以实时向我的应用程序传递消息的socket.io模块。我只使用node进行Web Socket连接。
我将简要说明我的设置。我使用Django作为我的HTTP后端。用户向Django发出请求,Django将该请求的内容转发到Redis,Node.js侦听Redis的一个频道,处理内容并将消息发送给适当的接收者。
非常简单和直接。一切都很好地运行。但我担心Node.js的Web Socket连接不安全。当Node.js向收件人发送消息时,我不希望有人在中间窥探和截取消息。我想确保我的用户感到安全并信任我为他们构建的服务。
我研究了自签名证书和CA证书。两者提供相同级别的安全性。由于我仅使用Node.js进行socket.io而不提供HTTP内容,自签名证书将完全可以胜任(我构建的服务面向移动设备,而不是浏览器!)。
下面是我的socket.io实现:
我不使用Node.js进行HTTP请求。我使用与Node.js配合工作以实时向我的应用程序传递消息的socket.io模块。我只使用node进行Web Socket连接。
我将简要说明我的设置。我使用Django作为我的HTTP后端。用户向Django发出请求,Django将该请求的内容转发到Redis,Node.js侦听Redis的一个频道,处理内容并将消息发送给适当的接收者。
非常简单和直接。一切都很好地运行。但我担心Node.js的Web Socket连接不安全。当Node.js向收件人发送消息时,我不希望有人在中间窥探和截取消息。我想确保我的用户感到安全并信任我为他们构建的服务。
我研究了自签名证书和CA证书。两者提供相同级别的安全性。由于我仅使用Node.js进行socket.io而不提供HTTP内容,自签名证书将完全可以胜任(我构建的服务面向移动设备,而不是浏览器!)。
下面是我的socket.io实现:
var io = require('socket.io').listen(8000);
var redis = require('socket.io/node_modules/redis')
var redisChannelConnection = redis.createClient(6000, "12.345.678.9");
var redisServer = redis.createClient(6000, "23.456.789.1");
// Subscribe to Redis Channel
redisChannelConnection.subscribe('messages');
io.sockets.on('connection', function (socket) {
socket.emit('message', 'Hello World');
}
我目前只写了一个简单的连接函数,它可以作为普通 WebSocket 连接使用。但我想将它变成安全的 WebSocket 连接。我该如何做?
谢谢你的帮助。