Skip to content

Mkcert

Mkcert permite generar certificados SSL/TLS válidos para entornos de desarrollo local. La herramienta crea una Autoridad de Certificación (CA) propia, la registra en los almacenes de confianza del sistema y del navegador, y emite certificados firmados por esa CA para los nombres o direcciones IP que necesites (como localhost, 127.0.0.1, 192.168.x.x o dominios personalizados como dev.local).

  1. Instalar mkcert:

    Dependiendo de tu sistema operativo, ejecuta el comando correspondiente:

    En macOS con Homebrew:

    Terminal window
    brew install mkcert

    En Linux con Homebrew:

    Terminal window
    brew install mkcert

    En Windows con Scoop:

    scoop bucket add extras
    scoop install mkcert

    En Windows con Chocolatey:

    choco install mkcert
  2. Instalar la CA local en el sistema:

    Ejecuta el siguiente comando para crear e instalar la Autoridad de Certificación local en los almacenes de confianza del sistema y del navegador:

    Terminal window
    mkcert -install

    Este paso solo es necesario realizarlo una vez. Mkcert registrará la CA raíz en el almacén del sistema, Firefox (si está disponible) y Java (si se detecta JAVA_HOME).

  1. Crear un certificado para los dominios necesarios:

    Especifica los nombres de host o direcciones IP para los que necesitas el certificado:

    Terminal window
    mkcert localhost 127.0.0.1 ::1

    Esto generará dos archivos en el directorio actual: localhost+2.pem (certificado) y localhost+2-key.pem (clave privada).

  2. Usar dominios personalizados:

    También puedes generar certificados para dominios personalizados o IPs de red local:

    Terminal window
    mkcert miapp.local 192.168.1.50
  3. Usar los certificados en un contenedor Docker:

    Copia los archivos generados al contenedor y configura el servidor para utilizarlos. Por ejemplo, con Nginx:

    FROM nginx:alpine
    COPY localhost+2.pem /etc/nginx/ssl/cert.pem
    COPY localhost+2-key.pem /etc/nginx/ssl/key.pem
    COPY nginx.conf /etc/nginx/conf.d/default.conf
    EXPOSE 443

    Configuración de Nginx correspondiente (nginx.conf):

    server {
    listen 443 ssl;
    server_name localhost;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    location / {
    root /usr/share/nginx/html;
    }
    }

    Construye y ejecuta el contenedor:

    Terminal window
    docker build -t mi-app-ssl .
    docker run -p 443:443 mi-app-ssl

Consultar dónde se almacena la CA local:

Terminal window
mkcert -CAROOT

Desinstalar la CA local del sistema:

Terminal window
mkcert -uninstall