Mkcert: una herramienta para crear certificados SSL para el desarrollo local

enabling-SSL-HTTPS

Hoy en dia el uso de certificados SSL en los sitios web es de suma importancia, dado que estos le brindan al usuario un nivel de seguridad y confiancia sobre el sitio que los utiliza, además de que desde hace algunos días, Chrome ya marca y advierete a los usuarios sobre sitios que no utilizan estos.

En este artículo, vamos a aprovechar para conocer una herramienta para poder instalar ceritificados SSL de manera local en nuestro sistema.

Mkcert es una sencilla herramienta que puede ser utilizada en la fabricación de certificados de confianza a nivel local. No requiere ninguna configuración. Siempre es peligroso o imposible de utilizar certificados de autoridades de certificación reales para localhost or 127.0.0.1. Incluso el uso de certificados con firma igualmente no se recomienda ya que provocan errores de confianza.

Mkcert nos proporciona la mejor solución a este mediante la gestión de su propia CA. Esto creará automáticamente y se instala una CA local en la raíz del sistema y genera localmente los certificados de confianza.

Para el caso de certificados SSL para páginas web, pueden consultar algunas otras alternativas libres, tales openSSL.

Requisitos

  • Sistema configurado con Go 1.10+ y privilegios de root.
  • Herramienta de base de datos de certificados (Certutil)

Instalacion de Go

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

apt install golang

Y podemos comprobar la instalación con:

go version

Ahora podemos crear un archivo en la siguiente ruta «/etc/profile.d/goenv.sh» para toda la variable de entorno de la siguiente manera:

nano /etc/profile.d/goenv.sh

Y dentro debemos de colocar:

export GOROOT=/usr/lib/go

export GOPATH=$HOME/go

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Ahora tecleamos:

source /etc/profile.d/goenv.sh

Instalacion de Apache

El siguiente paso es instalar nuestro servidor web y habilitar SSL para usar estos certificados de confianza de desarrollo a nivel local. Podemos instalar apache mediante el siguiente comando.

apt install apache2

systemctl enable apache2

ssystemctl start apache2

Instalación del Certutil

La herramienta de base de datos Certutil es una utilidad de línea de comandos simple que puede crear y modificar certificados y sus bases de datos.

Puede ser utilizado específicamente para enumerar, generar, modificar o eliminar certificados. Se puede incluso utilizar para crear o cambiar la contraseña, generar nuevos pares de claves públicas y privadas.

Para su instalación basta con teclear el siguiente comando:

apt install libnss3-tools

Instalando Mkcert

Mkcert

Para instalar esta herramienta basta con descargar el código desde GitHub, para ello solamente debemos de teclear:

wget https://github.com/FiloSottile/mkcert/archive/v1.0.0.tar.gz

tar -xvzf v1.0.0.tar.gz

cd mkcert-1.0.0/

Y compilamos la herramienta con:

make[/sourcecode]

Ahora podemos copiar este binario mkcert de la carpeta de instalación de /usr/bin/la carpeta para utilizarlo a nivel de servidor.

cd mkcert-1.0.0/bin/

cp mkcert /usr/bin/

Por último, podemos generar nuestro certificado local con este comando:

mkcert -install

Este se crea y se guarda en la ruta /root/.local/share/mkcert

Por lo general, el certificado CA y su clave se almacenan en una carpeta de datos de aplicación en la carpeta del usuario “home”.

La ubicación también puede obtenerse mediante el comando mkcert -CAROOT.

mkcert -CAROOT

/root/.local/share/mkcert

Ahora podemos utilizar esta herramienta para generar certificados de confianza de desarrollo a nivel local según sea necesario:

mkcert example.com '*.example.org' myapp.dev localhost 127.0.0.1 ::1

Como se informó en esta ejecución de comandos, los certificados de confianza localmente generados se guardan en la ruta desde donde se ejecuta este comando.

Es posible mover estos certificados, por ejemplo:

cp /root/example.com+5.pem /etc/ssl/certs /

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

Ahora es necesario modificar el archivo SSL predeterminado ubicado en /etc/apache2/sites-available/default-ssl.conf

SSLCertificateFile /etc/ssl/certs/example.com+5.pem

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

Ahora puede activar el módulo SSL y reiniciar el servicio de Apache 2 para hacer efectivos estos cambios.

a2enmod ssl

a2ensite default-ssl.conf

systemctl reload apache2

systemctl restart apache2

Hecho esto ya podemos realizar las pruebas de navegación con un certificado SSL local. Basta con teclear https://localhost y podrán ver que el navegador lo reconoce.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   jose pedro dijo

    Poco explicado, no imagináis la que he tenido que armar para poder instalarlo con los prerequisitos.
    No había forma humana de instalar apacheds para configurar el resto.

  2.   mikel dijo

    Cuando escribes: make [/sourcecode]

    A que te refieres??? que hay que poner en /sourcecode?

    Perdon por la smolestias.

    SAludos.

  3.   Julian Lasso dijo

    En Ubuntu 20.04 solo funciona para Firefox pero no para los navegadores basados en chromium :'(