conseguir-certificado-autofirmado-raspberry-pi

Cómo conseguir un certificado autofirmado para desarrollo en Raspberry Pi

Cuando estamos haciendo tareas de desarrollo y pruebas, muchas veces vamos a necesitar utilizar HTTPS para comprobar que todo funciona correctamente.

Para ello no necesitamos un certificado SSL “de verdad”. Para nuestras pruebas, un certificado SSL autofirmado puede ser más que suficiente. (de hecho es una herramienta muy habitual en desarrollo).

Los certificados autofirmados te los firmas “tu mismo porque patata”. Evidentemente, no tienen una gran validez ni seguridad

Los certificados SSL autofirmados no están validados por una autoridad certificadora. De hecho la mayoría de los navegadores mostrarán una advertencia (y bien que hacen).

Pero son útiles para pruebas internas y desarrollos locales (no para entornos de producción), donde necesitamos hacer pruebas de que algo funciona con HTTPS.

Así que vamos a ver como conseguir y configurar un certificado SSL autofirmado en un equipo con Linux como Raspberry Pi

Preparar tu Raspberry

En primer lugar, nos aseguramos de que nuestra Raspberry Pi esté actualizada.

sudo apt update
sudo apt upgrade

Además debe tener instalado servidor web necesario instalado. Para este tutorial, usaremos indistintamente Apache o Nginx

Generar el certificado SSL autofirmado

Ahora, vamos a instalar OpenSSL, es una herramienta clave para generar certificados autofirmados.

sudo apt install openssl

Usaremos OpenSSL para crear el certificado autofirmado. En este proceso, se generarán dos archivos:

  • Un certificado
  • Una clave privada

En primer lugar, creamos un directorio para los certificados.

sudo mkdir /etc/ssl/private
sudo chmod 700 /etc/ssl/private

Ahora, generamos la clave privada y el certificado. El siguiente comando para crear una clave privada de 2048 bits y un certificado autofirmado válido por un año:

sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/selfsigned.key -out /etc/ssl/certs/selfsigned.crt -days 365

Durante este proceso, se te pedirá que ingreses algunos detalles, como el país, el estado, la ciudad, el nombre de la organización, etc. Estos detalles se incorporarán al certificado.

Configurar el servidor para usar el certificado

Configurar Apache

Si estás utilizando Apache, sigue estos pasos para configurar el servidor web con el certificado autofirmado.

Abre el archivo de configuración SSL de Apache para habilitar SSL.

sudo nano /etc/apache2/sites-available/default-ssl.conf

Encuentra las siguientes líneas y modifícalas para apuntar a los archivos que acabamos de crear:

SSLEngine on
SSLCertificateFile /etc/ssl/certs/selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/selfsigned.key

Ahora habilitamos el habilitar el módulo SSL de Apache y el sitio de configuración SSL:

sudo a2enmod ssl
sudo a2ensite default-ssl

Finalmente reiniciamos Apache para aplicar los cambios:

sudo systemctl restart apache2

Configurar Nginx para usar el certificado

Si prefieres usar Nginx, sigue los pasos a continuación para configurar el servidor web con el certificado autofirmado.

Abrimos el archivo de configuración del sitio que deseemos modificar. Por ejemplo, si estás utilizando el sitio por defecto, edita el archivo default:

sudo nano /etc/nginx/sites-available/default

Ahora configuramos las rutas del certificado y la clave. Dentro del bloque server { }, nos aseguramos de que las siguientes líneas estén presentes y apuntando a los archivos que hemos creado:

server {
   listen 443 ssl;
   server_name example.local;

   ssl_certificate /etc/ssl/certs/selfsigned.crt;
   ssl_certificate_key /etc/ssl/private/selfsigned.key;

   location / {
	   root /var/www/html;
	   index index.html index.htm;
   }
}

También puedes dejar el servidor escuchando en el puerto 80 (HTTP) y redirigir todo el tráfico a HTTPS agregando lo siguiente:

server {
   listen 80;
   server_name example.local;

   return 301 https://$host$request_uri;
}

Verifica que la configuración de Nginx no tenga errores con el siguiente comando:

sudo nginx -t

Finalmente, reiniciamos Nginx para aplicar los cambios:

sudo systemctl restart nginx

Verificar la instalación

Ahora, vamos a comprobar que todo funciona correctamente. Abrimos un navegador web y accede a https://<tu_ip_o_dominio>.

Deberías ver el candado 🔒en la barra de direcciones, pero con una advertencia de seguridad que informa que el certificado no está validado por una autoridad de certificación.

Esto es normal para un certificado autofirmado (ya lo habíamos anticipado antes). Si ves el candado, es que está todo bien.