Échec du chargement de la ressource: net::err INSECURE RESPONSE socket.io

je me connecte à un port sur mon serveur via ssl... récemment, J'ai commencé à ne pas charger l'erreur resource: net::ERR_INSECURE_RESPONSE sur chrome lors de la connexion à la node.js + socket.serveur io.Voici le code de configuration de mon serveur:

var fs = require('fs');
var express = require('express');
var routes = require('./routes');
var https = require('https');
var path = require('path');
var socketio = require('socket.io');
var util = require('util');
var url = require('url');
var privateKey  =  fs.readFileSync('ssl/keys/xxxxxxxxxxxxxxxxxxxxxxxx.key', 'utf8');
var certificate = fs.readFileSync('ssl/certs/xxxxxxxxxxxxxx.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var sizeOf = require('image-size');


var DBWrapper = require('node-dbi').DBWrapper; 
var DBExpr = require('node-dbi').DBExpr; 
var dbConnectionConfig = { host: 'localhost', user: 'user', password: 'password', database: 'dbname' };
dbWrapper = new DBWrapper( "pg", dbConnectionConfig );
dbWrapper.connect();

var app = express();

app.set('port', process.env.PORT || 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

app.get('/', routes.index);


var server = https.createServer(credentials,app).listen(app.get('port'), function(){
  console.log("Express server listening on port with https " + app.get('port'));
});

 var io = socketio.listen(server);

Ce que je fais mal?

Modifier: C'est comment je me connecte sur le côté client:

socket = io.connect("https://website.com:8080", {'reconnect': false});
16
demandé sur user3455531 2014-07-01 11:35:27

4 réponses

j'ai eu un problème similaire en utilisant un certificat officiel, pas auto signé et je viens de trouver la solution. Il a seulement échoué dans chrome sur Android, btw. Ajouter la chaîne de certification à l'objet options du https.méthode createServer:

var hskey = fs.readFileSync('/the_key.key');
var hscert = fs.readFileSync('/the_cert.pem')
var ca = fs.readFileSync('/The_CA_bundle.pem')

var credentials = {
    ca:ca,
    key: hskey,
    cert: hscert
};

var server = https.createServer(credentials,app).listen(app.get('port'), function(){
  console.log("Express server listening on port with https " + app.get('port'));
});

il suffit de le mettre ici, pour empêcher quelqu'un d'autre frapper sa tête contre le mur alors qu'il a un problème similaire.

15
répondu KLoozen 2014-10-21 20:34:12

Votre certificat est probablement auto-signé.

Le chrome bloque ce genre de contenu non sûr. Si vous êtes seul à l'utiliser comme test par exemple, vous pouvez le débloquer l'ouverture d'un nouvel onglet dans Google chrome et va https://example.com:8080. Chrome vous annoncera que la ressource utilise un certificat SSL auto-signé et vous demandera si vous voulez continuer. Si vous le faites, votre application va maintenant travailler sur votre premier onglet.

rappelez-vous que vous le ferez pour chaque session de navigation dans chrome.

25
répondu Rémi Becheras 2017-10-02 12:50:12

Merci. Que résolu mon problème. Dans mon cas, J'exécutais le front-end Angular 2 en mode développement sur localhost: 3000 et back-end sur et j'avais aussi

 net::ERR_INSECURE_RESPONSE 

ma solution était de naviguer vers https://server:443 qui était déployé à l'avant et confirmait le certificat auto-signé.

1
répondu Viliam Kocinsky 2017-04-20 14:27:40

j'ai eu un problème récent avec cette erreur et tout ce que j'ai fait c'est changer les paramètres en HTTP au lieu de https mais cela pourrait aussi dépendre de votre implémentation.

0
répondu Jun Bin 2017-12-12 02:32:49