Como crear servidor HTTPS con un certificado autofirmado
Para habilitar en local host un servicio web con HTTPS es necesario crear certificados autofirmados.
Un certificado autofirmado no es confirmado por una entidad generadora de certificados, aun teniendo una clave privada asociada. Además, incluye una clave pública, información sobre el propietario y la firma propietario.
Un certificado de este tipo es suficiente para crear una conexión HTTPS segura para ambientes de desarrollo, ya que los navegadores se quejarán de que el certificado está autofirmado (y como tal no es de confianza).
Para crearlos ese necesario tener instalado OpenSSL y ejecutar el siguiente comando.
$ openssl req -nodes -new -x509 -keyout server.key -out server.cert
En el proceso pedirá información como las 2 primeras letras del nombre del país, luego el nombre del estado o provincia, la localidad (ciudad), también datos de la organización, por último el nombre común (localhost) y el correo.
En el directorio se puede comprobar que se generaron 2 archivos, uno con extensión .cert y el otro .key, estos serán necesarios para generar la conexión https.
Para el siguiente ejemplo, usaré express, un framework muy conocido para crear servicios https.
Al comprobar en el navegador, no sucede nada.
Ahora modificando un poco el script para que pueda hacer conexión HTTPS. Primero se importa 2 módulos, HTTPS para crear un webserver y fs para manipular archivos. En el método https.createserver, se pasan los archivos en un JSON y escuchará por el puerto indicado.
Al comprobar en el navegador, sale esta pequeña alerta que había mencionado antes, selecciona la opción avanzada y clic en aceptar riesgo y continuar.
y voila, ya se tiene un servicio web corriendo con certificado TLS.