Mkcert: cree certificados SSL para desarrollo local en Linux

En este artículo, explicaré cómo instalar mkcert, una herramienta de configuración cero en nuestro último sistema Ubuntu. Mkcert es una herramienta sencilla que se puede utilizar para crear certificados de confianza local. No requiere ninguna configuración. Siempre es peligroso o imposible utilizar certificados de Autoridades de certificación reales para localhost or 127.0.0.1. Incluso no se recomienda el uso de certificados autofirmados, ya que provocan errores de confianza.

Mkcert nos proporciona la mejor solución al gestionar su propia CA. Esto creará e instalará automáticamente una CA local en el almacén raíz del sistema y generará certificados de confianza local. Veamos los pasos para instalar mkcert.

Prerrequisitos

  • Un servidor bien configurado con Go 1.10+ y privilegios de root.
  • La herramienta de base de datos de certificados (Certutil)

Instalación de Golang

Go es un lenguaje de programación de sistemas de propósito general con el que podemos construir una amplia variedad de aplicaciones. Go language y sus kits de herramientas están disponibles en nuestro repositorio predeterminado. Podemos instalar el idioma Go en Ubuntu 18.04 simplemente ejecutando este comando.

#apt install golang
# go version
go version go1.10.1 linux/amd64

Ahora podemos crear un archivo “/etc/profile.d/goenv.sh” para configurar la variable de entorno Go en todo el servidor como se muestra a continuación:

# cat /etc/profile.d/goenv.sh
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

# source /etc/profile.d/goenv.sh

Instalación de Certutil

La herramienta Certificate Database o Certutil es una sencilla utilidad de línea de comandos que puede crear / modificar certificados y sus bases de datos clave. Se puede utilizar específicamente para enumerar, generar, modificar o eliminar certificados. Incluso se puede utilizar para crear o cambiar la contraseña, generar nuevos pares de claves públicas / privadas. Además, muestra el contenido de la base de datos de claves o elimina pares de claves dentro de la base de datos de claves. En nuestro servidor Ubuntu, podemos instalarlo ejecutando este comando a continuación:

#apt install libnss3-tools

Instalación de Mkcert

Dependiendo de nuestra plataforma de sistema operativo y los requisitos, necesitamos descargar el archivo fuente para Herramienta mkcert aquí.

#wget https://github.com/FiloSottile/mkcert/archive/v1.0.0.tar.gz
# cd mkcert-1.0.0/
#make

Ahora podemos copiar este binario mkcert de la carpeta de instalación a /usr/bin/ carpeta para usarlo en todo el servidor.

#cd mkcert-1.0.0/bin/
#cp mkcert /usr/bin/

Finalmente, podemos generar nuestra CA local para generar nuestros certificados con este comando:

# mkcert -install
Created a new local CA at "/root/.local/share/mkcert" ?
The local CA is now installed in the system trust store! ⚡️

Nuestra CA raíz se creará y guardará en la ruta /root/.local/share/mkcert. Por lo general, el certificado de CA y su clave se almacenan en una carpeta de datos de la aplicación en la página de inicio del usuario. La ubicación también se puede obtener usando el comando mkcert -CAROOT.

# mkcert -CAROOT
/root/.local/share/mkcert

Ahora podemos usar esta herramienta para generar certificados de desarrollo confiables localmente según sea necesario:

# mkcert example.com '*.example.org' myapp.dev localhost 127.0.0.1 ::1
Using the local CA at "/root/.local/share/mkcert" ✨

Created a new certificate valid for the following names ?
- "example.com"
- "*.example.org"
- "myapp.dev"
- "localhost"
- "127.0.0.1"
- "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅

Como se informa en la ejecución de este comando, los certificados de confianza generados localmente se guardan en la ruta desde donde ejecutamos este comando. En mi caso, mis certificados se crean en / root. Acabo de mover esos archivos a /etc/ssl carpeta de la siguiente manera:

#cp /root/example.com+5.pem /etc/ssl/certs/
#cp /root/example.com+5-key.pem /etc/ssl/private/

Habilitando los certificados en Apache2

Nuestro siguiente paso es instalar nuestro servidor web y habilitar SSL para utilizar estos certificados de desarrollo de confianza local. Instalé Apache2 y habilité SSL para hacer uso de esto.

#apt install apache2
#systemctl enable apache2
#systemctl start apache2

En segundo lugar, edite el archivo SSL predeterminado ubicado en /etc/apache2/sites-available/default-ssl.conf con nuestro certificado SSL generado localmente y los detalles de la clave como se muestra a continuación:

SSLCertificateFile /etc/ssl/certs/example.com+5.pem
SSLCertificateKeyFile /etc/ssl/private/example.com+5-key.pem

Ahora puede habilitar el módulo SSL y reiniciar el servicio Apache2 para que estos cambios sean efectivos.

# a2enmod ssl
# a2ensite default-ssl.conf
Enabling site default-ssl.
To activate the new configuration, you need to run:
systemctl reload apache2
#systemctl reload apache2
#systemctl restart apache2

Finalmente, podemos intentar navegar por https: // localhost para confirmar que está funcionando.

Leer también:

  • Cómo instalar certificados SSL Let’s Encrypt en Ubuntu 18.04

¡Hola! estamos listos con nuestros certificados de confianza local. Mkcert está diseñado solo para fines de desarrollo, no se recomienda para producción, por lo que no debe usarse en las máquinas de los usuarios finales, y nunca debe exportar o compartir rootCA-key.pem por razones de seguridad. ¡Espero que este artículo sea informativo y útil para ti! Publique sus valiosos comentarios y sugerencias al respecto.