Le programme d'installation du Serveur-Serveur de communication SSL à l'aide d'une douille.io node.js
Je suis en train de configurer un serveur à un lien à l'aide d'une douille.io plus de connexion ssl. C'est mon exemple:
/**
* Server
*/
var app = require('express')();
var config = require('./config');
var https = require('https');
var http = require('http');
var fs = require('fs');
var server = https.createServer({key: fs.readFileSync(config.ssl.key), cert: fs.readFileSync(config.ssl.cert), passphrase: config.ssl.passphrase}, app);
//var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(config.port);
app.get('/', function (req, res) {
res.send('Server');
//res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
/**
* Client
*/
var io = require('socket.io-client');
//var socket = io.connect('http://localhost', {port: 8088});
var socket = io.connect('https://localhost', {secure: true, port: 8088});
socket.on('connect', function(){
socket.on('event', function(data){});
socket.on('disconnect', function(){});
});
Le code fonctionne très bien quand couru sans SSL. Je soupçonne qu'il pourrait être mon certificat auto-signé n'a pas été accepté, mais je ne sais pas comment faire que le client accepte.
Veuillez me montrer comment:
1. Accepter le certificat SSL auto-signé.
ou
2. Aide-moi à faire ce travail d'une autre façon.
Merci d'avance.
- Après quelques plus de creuser, j'ai trouvé que l'ajout de: require('https').globalAgent.des options.rejectUnauthorized = false; avant de "var socket" dans le client résout le problème
Vous devez vous connecter pour publier un commentaire.
J'ai eu à faire les choses un peu différemment sur le client pour obtenir que cela fonctionne, par la main de raconter socket.io utilisation de l'Agent (et le
secure: true
est implicite parhttps:
). Ici, il est:C'est à l'aide d'une douille.io v1.0.2.
Sinon, j'ai eu du succès avec la suite ainsi, comme indiqué ici: Socket.io + SSL + auto-signé certificat CA donne une erreur lors de la connexion
Après quelques recherches, l'ajout de cette dans le client rend le travail:
require('https').globalAgent.des options.rejectUnauthorized = false;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
Les réponses précédentes ne l'ai pas fait pour moi.
require('https').globalAgent
est toujoursundefined
.Fait quelques seaching et trouvé le
rejectUnauthorized
paramètre dans les docs (https://nodejs.org/api/tls.html). Vous ne savez pas si c'est lié à SocketIO, mais il semble en quelque sorte de travailler avec des certificats auto-signés:var socket = io.connect('//yourhost:8000', {secure: true, rejectUnauthorized: false})
secure: true
peut être facultatif, mais je tiens à l'appliquer de toute façon.Alors que toutes les solutions ci-dessus se concentrer sur
rejectUnauthorized=false
, je voudrais suggérer une alternative.