Tag: 握手

使用SSL over TCP通过NodeJSbuild立两个服务器之间的安全连接

我试图从一个服务器发送一个包到另一个,但我需要确保发件人是“真正的”,包不能被拦截,我怎么能做到这一点使用SSL与NodeJS或其他方式。 这就是我所做的: 服务器代码: server = tls.createServer(function(c) { console.log('server connected', c.authorized ? 'authorized' : 'unauthorized'); }); 客户代码: var tls = require('tls'); var fs = require('fs'); var options = { key : fs.readFileSync('server.key'), cert : fs.readFileSync('server.crt') }; var client = tls.connect(9838, options, function () { console.log(client.authorized ? 'Authorized' : 'Not authorized'); }); 这个错误出来了: Error: 101057795:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv handshake […]

node.js上的websocket握手

我正在尝试构build一个代码来pipe理与node.js的websocket连接 我没有find一个方法让握手在铬中被接受 Chrome返回“WebSocket连接到'ws://127.0.0.1:8888 /'失败:在WebSocket握手期间出现错误:Sec-WebSocket-Accept不匹配” 有了这个 << >>> var http=require("http"); var crypto=require("crypto"); var server=http.createServer(function(req,res){ res.writeHeads("200","content-type:text/plain"); res.end(); }); server.on("upgrade",function(req,socket,head){ for(var item in req.headers){ console.log(item); console.log(req.headers[item]); } var GUID="258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; var secKey=req.headers["sec-websocket-key"]; var sha=crypto.createHash("sha1"); secKey+=GUID; secKey=sha.update(secKey).digest("base64"); var key64=new Buffer(secKey); key64=key64.toString("base64"); console.log(key64); var headersReturn='HTTP/1.1 101 Switching Protocols\r\n'; headersReturn+='Upgrade: websocket\r\n'; headersReturn+='Connection: Upgrade\r\n'; headersReturn+='Sec-WebSocket-Accept:'+key64+"\r\n\r\n"; var boo=socket.write(headersReturn); console.log(headersReturn); socket.on("connect",function(){console.log("success");}); socket.on("data",function(data){ console.log(data); }); }); […]

Websocket握手,JWT了解安全

嗨,我试图了解这个握手如何工作和智威汤逊。 所以我有一些网页的东西,一些用户可以去login自己。 然后我创build一个JWT,所以当我向服务器请求时,我使用这个令牌来validation用户。 我想创build和websoket连接,并使用这个令牌。 所以我做了这样的服务器 var server = app.listen(3000, function(){ console.log('Server listening on', 3000); }); require('./websockets').connect(server); 在那个文件websockets.js我有 var _ = require('lodash') var ws = require('ws') var url = require('url') var jwt = require('jwt-simple') var config = require('./config') var clients = []; exports.connect = function(server){ var wss = new ws.Server({server:server}); wss.on('connection', function(ws){ var location = url.parse(ws.upgradeReq.url, […]

SocketCluster中间件握手与承诺

我build立一个既服务于http和ws的应用程序。 用户首先通过HTTPlogin到Laravel服务器。 这将返回一个用于允许通过WSlogin的JWT。 Ihv添加了一个MIDDLEWARE_HANDSHAKE,它获取该令牌并向Laravel Server发出请求,询问该令牌是否有效,并且该用户有权访问WS(并非每个已login的用户都可以访问WS); 客户代码: var options = { host: '127.0.0.1:3000', query: { source: 'web', token: '', } }; var socket; $.post('http://127.0.0.1:8000/authenticate', { email: 'chadd01@example.org', password: '1234' }, function(data, textStatus, xhr) { options.query.token = data.token; //ALL PERFECT UNTILL HERE // Initiate the connection to the ws server socket = socketCluster.connect(options) .on('connect', function(data) { console.log('CONNECTED', […]

Node.js – 在运行时dynamic更改HTTPS服务器的SSL证书

我正在build立一个HTTPS代理node 。 基本上,我允许用户为我的代理服务器设置一个DNS CNAME别名,并将他们的SSL证书导入到我的应用程序中(例如AWS Elastic Load Balancer),以便他们的CNAME主机名得到适当的保护,每一个请求都被客户认可。 现在我正在代理端工作,我试图find一种方法来在与客户端的SSL握手之前dynamic地加载正确的证书。 工作stream程是: 服务器收到新的请求 获取客户端请求的主机名(即用户设置的DNS CNAME别名) 加载属于该主机名的正确证书 在当前请求中使用加载的证书 (需要帮助) 握手(加载的证书 – 因请求而异) 有没有办法做到这一点?