Javascript 正在socket.io-client中检查CA
我创建了一个带有socket.io的HTTPS服务器和一个带有socket.io客户端的客户端。Javascript 正在socket.io-client中检查CA,javascript,node.js,https,websocket,socket.io,Javascript,Node.js,Https,Websocket,Socket.io,我创建了一个带有socket.io的HTTPS服务器和一个带有socket.io客户端的客户端。 问题是socket.io-client显然没有通过其选项中的给定CA检查HTTPS连接的有效性。 为了澄清,这里有一个示例代码:在简单的https请求中,如果我没有在客户端提供CA,我会得到错误:无法验证第一个证书,但通过socket.io建立客户端连接,这完全不是我想要的 //Client var https = require('https'), socketClient = requ
问题是socket.io-client显然没有通过其选项中的给定CA检查HTTPS连接的有效性。
为了澄清,这里有一个示例代码:在简单的https请求中,如果我没有在客户端提供CA,我会得到
错误:无法验证第一个证书,但通过socket.io建立客户端连接,这完全不是我想要的
//Client
var https = require('https'),
socketClient = require('socket.io-client'),
fs = require('fs');
var options = {
// IT'S EXPECTED THAT I DON'T PROVIED CA, HTTPS CONNECTION FAILS
//ca: fs.readFileSync('cert/ca.crt'),
agent: false
};
var socket = socketClient('https://localhost', options);
socket.on('connect', function() {
console.log('Connected to hub');
socket.emit('msg', function(resp){
console.log('Response: ' + resp);
});
});
和服务器:
// Server
var https = require('https'),
socketIo = require('socket.io'),
fs = require('fs');
var options = {
// CERTIFICATE HAS BEEN SIGNED WITH CA
cert: fs.readFileSync('cert/signed.crt'),
key: fs.readFileSync('cert/signed.key'),
rejectUnauthorized: false
};
var app = https.createServer(options, function(req, res) {
res.end('Hi');
});
var io = socketIo(app);
io.on('connection', function(socket) {
console.log('Connected !');
socket.on('msg', function(cb) {
console.log('Msg recved');
cb('Client got it');
});
});
app.listen(443, function() {
console.log('Server Started ...');
});