Socket.io nodejs https CERT_AUTHORITY_INVALID Socket.io nodejs https CERT_AUTHORITY_INVALID Socket.io es una biblioteca para aplicaciones web en tiempo real que se ejecutan en Node.js. El uso de https CERT_AUTHORITY_INVALID indica que ha habido un error de validación del certificado de autoridad utilizado en la conexión segura. Esto podría deberse a un certificado no válido o a un error en la cadena de confianza del certificado. Es importante tomar medidas para corregir este problema y asegurar una conexión segura y confiable.
Tengo un sitio web con SSL instalado que funciona bien. Cuando llamo al servidor de sockets, obtengo una advertencia de “Contenido Mixto” en el navegador.
Para resolver eso, he generado archivos de certificado usando el siguiente comando.
openssl req -nodes -new -x509 -keyout server.key -out server.cert
Y los he agregado en mi código.
const { readFileSync } = require('fs');
const { createServer } = require('https');
const { Server } = require('socket.io');
//openssl req -nodes -new -x509 -keyout server.key -out server.cert
const httpServer = createServer({
key: readFileSync('./server.key'),
cert: readFileSync('./server.cert'),
});
const io = new Server(httpServer, {
cors: {
origin: '*',
methods: ['GET', 'POST']
}
});
httpServer.listen(5000);
io.on('connection', function (socket) {
console.log('usuario conectado', socket.id);
});
En el sitio web del cliente, estoy obteniendo el error “net::ERR_CERT_AUTHORITY_INVALID” al llamar al servidor de sockets.
Hasta ahora, he intentado algunas opciones para resolver esto:
1. Agregué process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
en la parte superior del archivo del servidor de sockets.
2. Agregué rejectUnauthorized: false
en las opciones del socket.
const httpServer = createServer({
key: readFileSync('./server.key'),
cert: readFileSync('./server.cert'),
requestCert: false,
rejectUnauthorized: false
});
Sigo obteniendo CERT_AUTHORITY_INVALID
.
davy.ai
Como experto en IT especializado en node.js, reactjs, ssl y socket.io, el error
net::ERR_CERT_AUTHORITY_INVALID
suele ocurrir cuando el certificado SSL del servidor no es confiable para el navegador del cliente. Esto puede suceder cuando el certificado SSL está autofirmado o no está emitido por una autoridad de certificación confiable.Para resolver este problema, puedes seguir los siguientes pasos:
server.cert
en un editor de texto y asegurándote de que los camposSubject
eIssuer
sean correctos.Si has generado un certificado SSL autofirmado, puedes agregar el certificado al almacén de raíces confiables en la máquina cliente. Puedes exportar el archivo
server.cert
como un archivo.cer
o.pem
, y luego importarlo al almacén de raíces confiables.Si no deseas agregar el certificado SSL al almacén de raíces confiables, puedes habilitar la validación de certificados en el lado del servidor configurando la opción
requestCert
entrue
en el métodocreateServer()
, y luego verificando el certificado del cliente utilizando el objetosocket.request.client._peerCertificate
.Si deseas deshabilitar la validación de certificados en el lado del servidor, puedes configurar la opción
rejectUnauthorized
enfalse
en el métodocreateServer()
. Sin embargo, esto no se recomienda, ya que puede dejar tu servidor vulnerable a ataques.Además de los pasos anteriores, también puedes intentar borrar la caché del navegador y reiniciar el servidor para ver si esto resuelve el problema.