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.

¿Cómo firmar un certificado SSL para una dirección IP?

Tengo un servidor que aloja ÚNICAMENTE el backend de nodo (Estoy usando express) de mi sitio web en una máquina en mi casa y quiero llamar a este servidor desde otro backend (estamos intentando construir un sistema de API que nos ayude con nuestro backend principal).

Necesito un certificado SSL y necesito verificarlo usando una Autoridad de Certificación (AC), pero estoy atascado en este punto. ¿Cómo puedo verificar el SSL? Intenté usar zeroSSL pero no funciona porque estoy tratando de firmar un certificado para una dirección IP ya que no tengo un DNS.

Ejemplo: Quiero llamar a mi endpoint no así:

http://X.X.X.X:puerto#/endpoint

Sino así:

https://X.X.X.X:puerto#/endpoint

Cualquier ayuda sería apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para verificar el certificado SSL de su servidor, puede seguir estos pasos:

    1. Generar un certificado SSL autofirmado para su servidor utilizando openssl.
    2. Instalar el certificado SSL en su servidor backend de Node.
    3. Utilizar una Autoridad de Certificación (CA) para firmar su certificado SSL.
    4. Instalar el certificado de CA en el servidor backend que intenta llamar a su servidor backend de Node.
    5. Verificar el certificado SSL utilizando el certificado de CA.

    Para generar un certificado SSL autofirmado para su servidor, puede utilizar el siguiente comando openssl:

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
    

    Esto generará una clave privada (key.pem) y un certificado SSL autofirmado (cert.pem) válidos por 365 días.

    Para instalar el certificado SSL en su servidor backend de Node, puede utilizar el módulo https en Node.js de la siguiente manera:

    const https = require('https');
    const fs = require('fs');
    
    const options = {
      key: fs.readFileSync('key.pem'),
      cert: fs.readFileSync('cert.pem')
    };
    
    const server = https.createServer(options, (req, res) => {
      res.writeHead(200);
      res.end('¡Hola, mundo!');
    });
    
    server.listen(port, () => {
      console.log(`Servidor en ejecución en el puerto ${port}`);
    });
    

    Esto iniciará un servidor HTTPS que escucha en el puerto especificado, utilizando el certificado SSL que generó anteriormente.

    Para utilizar una CA para firmar su certificado SSL, puede utilizar un servicio como Let’s Encrypt o comprar un certificado de un proveedor confiable. Una vez que tenga el certificado SSL firmado, puede instalarlo en su servidor y actualizar el objeto options para utilizarlo en lugar del certificado autofirmado.

    Para instalar el certificado de CA en el servidor backend que intenta llamar a su servidor backend de Node, simplemente puede descargar el certificado de CA del proveedor e instalarlo en el almacén de certificados confiables del sistema.

    Para verificar el certificado SSL utilizando el certificado de CA, puede utilizar el método request del módulo https para realizar una solicitud a su servidor backend de Node, de la siguiente manera:

    const https = require('https');
    const fs = require('fs');
    
    const options = {
      ca: fs.readFileSync('ca.pem')
    };
    
    https.request('https://X.X.X.X:port#/endpoint', options, (res) => {
      console.log(`código de estado: ${res.statusCode}`);
      res.on('data', (d) => {
        process.stdout.write(d);
      });
    }).on('error', (e) => {
      console.error(e);
    });
    

    Esto realizará una solicitud HTTPS a su servidor backend de Node, utilizando el certificado de CA especificado para verificar el certificado SSL. Si el certificado SSL es válido, debería recibir una respuesta del servidor.

Comments are closed.