es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Asegúrate de que el certificado SSL que has generado sea válido y esté emitido por una autoridad de certificación confiable. Puedes verificar esto abriendo el archivo server.cert en un editor de texto y asegurándote de que los campos Subject e Issuer sean correctos.
    2. 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.

    3. 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 en true en el método createServer(), y luego verificando el certificado del cliente utilizando el objeto socket.request.client._peerCertificate.

    4. Si deseas deshabilitar la validación de certificados en el lado del servidor, puedes configurar la opción rejectUnauthorized en false en el método createServer(). 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.

Comments are closed.