1

Estoy tratando poder configurar el servidor Express que tengo creado, para pasar el certificado SSL y pase de http a https.

Leí la documentación de Express pero no encuentro la solución. Me propusieron cosas como Lets Encrypt pero no admite Node.js No se si debo modificar el archivo hosts, que ya modifique para que corriera la aplicación, o que tengo que hacer. Vi una forma, pero solo funciona en sistema Unix. Muestro la forma en la que tengo configurado el archivo del server por si pueden ayudarme, llevo tres días buscando formas de hacerlo sin éxito. Las que vi no admiten Node.js. Gracias

let express = require('express');
let aws = require('aws-sdk');
let multer = require('multer');
let multerS3 = require('multer-s3');
let ext = require('file-extension');
let cookieParser = require('cookie-parser');
let bodyParser = require('body-parser');
let expressSession = require('express-session');
let passport = require('passport');
let michaelgram = require('michaelgram-client');
let auth = require('./auth')
let config = require('./config');
let port = process.env.PORT || 5050;

let client = michaelgram.createClient(config.client);

let s3 = new aws.S3({
  accessKeyId: config.aws.accessKey,
  secretAccessKey: config.aws.secretKey
});

app.listen(port, function (err) {
  if (err) return console.log('Hubo un error'), process.exit(1);

  console.log('Michaelgram escuchando en el puerto 5050');
})
JackNavaRow
  • 6,836
  • 5
  • 22
  • 49
Miguel Espeso
  • 2,445
  • 5
  • 21
  • 47
  • 1
    Si estás usando AWS y tienes un dominio en Route53, puedes generar tus certificados, para tu dominio o subdominios. Respecto a usarlo en Express, nuevamente, si utilizas las herramientas correctas de AWS, esto también lo puede hacer por tí mediante nginx. Por ejemplo --> (utilizar EB(Node) + Route53). Si quieres seaprar tu API del Front (utilizar API Gateway + Lambda + S3 (static website) + CloudFront) – Jose Hermosilla Rodrigo May 28 '18 at 18:17
  • 1
    el que publica la publicacion es el app, por tanto debe hacer un cambio, una forma es la que te ofrece @JoseHermosillaRodrigo otra es hacerlo con express pero depende a donde quieres llegar – JackNavaRow May 28 '18 at 19:05
  • 1
    De acuerdo! De todas formas puedes ir haciendo pruebas y trasteando por AWS. La capa de nginx, no te va a hacer falta gestionarla, salvo que necesites algo que se salga de la configuración que te proporciona cada herramienta. – Jose Hermosilla Rodrigo May 28 '18 at 19:06

1 Answers1

1

segun la documentacion de Express.js

var express = require('express');
var fs = require('fs');
var https = require('https');
var http = require('http');
var app = express();

var options = {
  key: fs.readFileSync('ruta_key/key.pem'),
  cert: fs.readFileSync('ruta_cert/cert.cert')
};

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

en este ejemplo el http escucha por el 80 mientras que el https escucha por el 443, recuerda que puedes tener problemas que los certificados no sean validos y/o que algunos de los puertos se encuentren bloqueado

Aprovecho de comentarte cambiar tus importaciones de let a var y tus funciones deben ser const

JackNavaRow
  • 6,836
  • 5
  • 22
  • 49
  • [Continuemos el debate en el chat](https://chat.stackexchange.com/rooms/78164/discussion-between-jacknavarow-and-miguel-espeso). – JackNavaRow May 29 '18 at 20:02
  • Eso ya lo probe y me daba error: `[1] events.js:183 [1] throw er; // Unhandled 'error' event [1] ^ [1] [1] Error: listen EADDRINUSE :::5050` – Miguel Espeso May 30 '18 at 21:37