Un servidor Express HTTPS con certificado autofirmado

Cómo crear un certificado HTTPS autofirmado para Node.js para probar aplicaciones localmente

Para poder servir un sitio en HTTPS desde localhost, debe crear un certificado autofirmado.

Un certificado autofirmado es suficiente para establecer una conexión HTTPS segura con fines de desarrollo. Aunque los navegadores se quejarán de que el certificado está autofirmado (y, como tal, no es de confianza).

Para crear el certificado debes tenerOpenSSLinstalado en su sistema.

Es posible que ya lo tenga instalado, solo intente escribiropensslen tu terminal.

Si no es así, en una Mac puedes instalarlo usandobrew install openssl(si utilizaCerveza casera). De lo contrario, busque en Google "cómo instalar openssl en”.

Una vez que OpenSSL esté instalado, ejecute este comando:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Se le pedirá que responda algunas preguntas. El primero es el nombre del país:

Generating a 1024 bit RSA private key
...........++++++
.........++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:

Entonces tu estado o provincia:

State or Province Name (full name) [Some-State]:

Tu ciudad:

Locality Name (eg, city) []:

... y el nombre de su organización:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:

Puede dejar todos estos vacíos.

Solo recuerda configurar esto enlocalhost:

Common Name (e.g. server FQDN or YOUR name) []: localhost

... y para agregar su dirección de correo electrónico:

Email Address []:

¡Eso es! Ahora tiene 2 archivos en la carpeta donde ejecutó el comando original:

  • server.certes el archivo de certificado autofirmado
  • server.keyes la clave privada del certificado

Se necesitarán ambos archivos para establecer la conexión HTTPS y, dependiendo de cómo vaya a configurar su servidor, el proceso para usarlos variará.

Esos archivos deben colocarse en un lugar accesible para la aplicación, y luego deberá configurar el servidor para usarlos.

Este es un ejemplo usando elhttpsmódulo central y Express:

const https = require('https')
const app = express()

app.get(’/’, (req, res) => { res.send(‘Hello HTTPS!’) })

https.createServer({}, app).listen(3000, () => { console.log(‘Listening…’) })

Sin agregar el certificado, si me conecto ahttps://localhost:3000esto es lo que mostrará el navegador:

without-cert

Con el certificado en su lugar:

const fs = require('fs')

//… https.createServer({ key: fs.readFileSync(‘server.key’), cert: fs.readFileSync(‘server.cert’) }, app).listen(3000, () => { console.log(‘Listening…’) })

Chrome nos dirá que el certificado no es válido (ya que está autofirmado) y nos pedirá que lo confirmemos antes de continuar (sin embargo, la conexión HTTPS seguirá funcionando):

with-cert

Descarga mi gratisManual de Express.js


Más tutoriales rápidos: