Cómo generar certificados autofirmados

Este post trata sobre cómo podemos generar certificados SSL autofirmados en Windows, con mkcert, para poder configurar servidores HTTPS.

El mérito no es mío, solamente he seguido los pasos detallados en un documento elaborado por un compañero de trabajo.

El proceso a grandes rasgos es el siguiente:

Instalar mkcert

Existen dos alternativas:

  1. Seguir las instrucciones oficiales
  2. Usar Chocolatey

Yo he ido por la segunda opción, porque es realmente fácil. Aunque, primero habría que instalar Chocolatey. Cuidado con los requisitos de seguridad. Yo no he tenido problemas instalándolo desde PowerShell con permisos de administrador.

Para instalar mkcert con Chocolatey:

choco install mkcert

Crear una Autoridad de Certificación

Abre un consola de PowerShell con permisos de administrador, y ejecuta el siguiente comando:

mkcert -install

Se puede comprobar que se ha instalado correctamente si vamos a “Windows > Administrar certificados de usuario”. En este diálogo de Windows deberíamos encontrar la Autoridad de Certificación bajo el menú “Entidades de certificación raíz de confianza > Certificados”

Entidades de certificación raíz de confianza

Crear certificados firmados

Dentro de la consola PowerShell, ve al directorio donde quieres que se almacenen los certificados y ejecuta:

mkcert tu.dominio.local

Donde tu.dominio.local será la dirección para acceder a tu servidor. Posiblemente mkcert localhost te pueda servir.

Esta dirección debe existir en tu fichero de hosts, C:\Windows\System32\drivers\etc\hosts, de lo contrario, el certificado se generará pero las peticiones al servidor no llegarán correctamente.

Ese comando generará dos ficheros: tu.dominio.local.pem y tu.dominio.local-key.pem. Son estos ficheros los que deberás usar para configurar tu servidor o aplicación.

El comando puede generar certificados para varios dominios, subdominios o direcciones IP. Se pueden usar asteriscos, * (wildcards).

Usar el certificado

A partir de aquí, es fácil encontrar guías para utilizar estos certificados en: aplicaciones Node.js desarrolladas con Express, aplicaciones React creadas con create-react-app, servidores Apache, Nginx,…

Referencias