Cómo crear certificados SSL de confianza local con mkcert en Ubuntu 20.04

Mkcert es una herramienta gratuita, sencilla y muy útil que te permite crear un certificado de confianza local sin tener que comprarlo a la CA real. Los desarrolladores suelen trabajar en el sistema local y siempre es imposible utilizar el certificado de confianza de la CA en localhost. Mkcert te permite gestionar tus propios certificados sin ninguna molestia.

En este post, te mostraremos cómo crear un certificado SSL de confianza para el desarrollo local utilizando Mkcert en Ubuntu 20.04.

Requisitos previos

  • Un sistema que ejecute Ubuntu 20.04 Desktop.
  • Una contraseña raíz configurada en el servidor.

Cómo empezar

En primer lugar, actualiza los paquetes del sistema a la versión actualizada ejecutando el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, puedes pasar al siguiente paso.

Instalar Mkcert

Antes de instalar la utilidad Mkcert, tendrás que instalar los paquetes necesarios en tu servidor. Puedes instalarlo con el siguiente comando:

apt-get install wget libnss3-tools

Una vez instalados todos los paquetes, descarga la última versión de Mkcert desde Github.

wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64

Tras descargar Mkcert, mueve el binario descargado a la ruta del sistema:

mv mkcert-v1.4.3-linux-amd64 /usr/bin/mkcert

A continuación, establece el permiso de ejecución del mkcert:

chmod +x /usr/bin/mkcert

A continuación, verifica la versión de Mkcert con el siguiente comando:

mkcert --version

Deberías ver la siguiente salida:

v1.4.3

Generar CA local

Ahora, ejecuta el siguiente comando para generar un certificado de CA local:

mkcert -install

Deberías ver la siguiente salida:

Created a new local CA ????
The local CA is now installed in the system trust store! ??
The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! ????

Puedes comprobar la ruta del certificado de CA con el siguiente comando:

mkcert -CAROOT

Deberías ver la siguiente salida:

/root/.local/share/mkcert

Generar un certificado para el sitio web local

A continuación, puedes generar el certificado y el archivo de claves para tu sitio web alojado localmente utilizando el siguiente comando:

mkcert app.example.com localhost 127.0.0.1 ::1

Deberías ver la siguiente salida:

Created a new certificate valid for the following names ????
 - "app.example.com"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./app.example.com+3.pem" and the key at "./app.example.com+3-key.pem" ?

It will expire on 1 November 2023 ????

Configurar Nginx para utilizar el certificado generado

A continuación, tendrás que configurar el servidor web Nginx para que utilice los certificados generados.

En primer lugar, copia los archivos del certificado generado en el directorio /etc/ssl/:

cp app.example.com+3* /etc/ssl/

A continuación, establece la propiedad adecuada en el directorio raíz de la web Nginx:

chown -R www-data:www-data /var/www/html/

A continuación, crea un archivo de configuración del host virtual Nginx con el siguiente comando:

nano /etc/nginx/conf.d/app.conf

Añade las siguientes líneas:

server {
   listen 80;
   server_name app.example.com;
   root /var/www/html;
}

server {
   listen *:443 ssl;
   root /var/www/html;
   server_name app.example.com;
   ssl_certificate /etc/ssl/app.example.com+3.pem; 
   ssl_certificate_key /etc/ssl/app.example.com+3-key.pem;
}

Guarda y cierra el archivo cuando hayas terminado y luego verifica que Nginx no tenga ningún error de sintaxis:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

A continuación, edita el archivo /etc/hosts y vincula tu app.example.com a la dirección IP de tu sistema:

nano /etc/hosts

Añade las siguientes líneas:

your-server-ip app.example.com

Verificar SSL para tu dominio

Ahora, abre tu navegador web y escribe la URL https://app.example.com. Deberías ver que tu dominio está asegurado con Mkcert.

Página web segura de Nginx

Ahora, haz clic en el icono del candado. Deberías ver la información sobre tu certificado en la siguiente página:

Detalles del certificado SSL

Conclusión

Enhorabuena! has instalado con éxito Mkcert y has creado un certificado CA de confianza para tu desarrollo local. Yo recomendaría utilizar Mkcert sólo para el entorno de desarrollo. No se recomienda para el entorno de producción.

También te podría gustar...