Cómo conseguir certificados SSL GRATIS en Debian 9

En esta entrada vamos a ver cómo conseguir certificados SSL gratis con certbot para tu página web paso a paso. Con la importancia que Google está concediendo cada vez más a aquellos dominios accesibles a través de HTTPS en lugar de HTTP, es más que recomendable cambiarnos al protocolo seguro. El inconveniente es que para conseguir un certificado SSL gratuito firmado por alguna autoridad certificadora, o conseguir que nos firmen uno que generemos nosotros mismos, casi siempre hay que realizar un desembolso económico. Y sí, he dicho «casi siempre»…

Cómo conseguir certificados SSL gratis

Efectivamente, sí que tenemos una opción para conseguir certificados SSL gratis: Let’s Encrypt. Let’s Encrypt es una autoridad certificadora que nos va a permitir crear un certificado SSL gratis con un período de validez de tres meses gracias a la herramienta certbot. No te alarmes, aunque el período es de tres meses podemos renovarlos todas las veces que necesitemos de forma automática.

¿Se puede pedir más?

Antes de conseguir tu certificado SSL gratis

Antes de poder solicitar el certificado SSL, necesitamos tener nuestro sistema preparado y listo para el proceso. Podrás seguir esta guía si reúnes estos requisitos:

  • Sistema Debian 9 actualizado.
  • Servidor web instalado y funcionando (en esta guía usaremos Apache).
  • Conocimientos básicos en la configuración de tu servidor web.
  • El dominio o subdominio para el que queremos el certificado SSL gratis apuntando a nuestra máquina Debian.
  • Acceso a terminal como root o, más recomendable, como usuario con privilegios de sudo.
  • Conexión a Internet.

Si estás leyendo esto es casi seguro que cumples los puntos anteriores, por lo que ve abriendo una terminal, que en un instante vas a disfrutar de tu certificado SSL instalado en tu página web.

Cómo crear certificados SSL gratis en Debian

La situación de la que partimos es la siguiente: tenemos un dominio configurado y un servidor web respondiendo las peticiones a ese dominio. En este tutorial usaré el dominio de pruebas pruebas.chachocool.com.

En un principio podemos acceder vía web por el protocolo HTTP (puerto 80) habitual, pero no a través del protocolo seguro HTTPS (puerto 443) que es para el que queremos conseguir el certificado SSL gratis.

como conseguir certificados ssl gratis en debian
Inicialmente es posible acceder a nuestra web por HTTP, pero no por HTTPS

La herramienta que vamos a utilizar es certbot.

Cómo instalar certbot en Debian 9

Por suerte instalar certbot en Debian 9 es una tarea trivial, ya que se encuentra disponible desde los repositorios oficiales de Debian. Lo único que debemos hacer es instalar el paquete certbot con el comando apt.

Como siempre que vamos a instalar nuevos paquetes en nuestro sistema Debian, es recomendable empezar actualizando la información de los repositorios:

~$ sudo apt update && sudo apt -y upgrade

Ya estamos listos para instalar certbot a través de apt:

~$ sudo apt -y install certbot

En unos instantes tendremos la herramienta certbot instalada junto con sus dependencias.

Cómo crear e instalar el certificado SSL gratuito con certbot en Debian

Una vez instalada la herramienta certbot en el sistema, estamos listos para usarla. Debemos tener en cuenta que:

  • El dominio para el que queremos crear e instalar el certificado SSL gratuito debe apuntar a nuestro servidor, que debe servir la página por defecto bajo el protocolo HTTP.
  • Durante el proceso se detendrá momentáneamente el servidor web, el tiempo mínimo imprescindible para la creación del certificado SSL gratuito.
  • Este proceso no configura el servidor web para usar el certificado SSL recién creado, es necesario configurar el servidor web manualmente.

Teniendo claro todo esto vamos a obtener un certificado SSL gratis para el subdominio de pruebas que estoy usando en esta guía (pruebas.chachocool.com).

El comando certbot es interactivo, aunque hay que pasarle ciertos parámetros, como los comandos que pueden detener y volver a iniciar el servidor web.

Puedes lanzar el siguiente comando en el terminal si tu servidor web es Apache:

~$ sudo certbot certonly --authenticator standalone --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"

Los parámetros principales son:

  • authenticator: Indica el modo de funcionamiento del comando. El valor standalone se refiere al modo terminal, sin integrar con ningún servidor web.
  • pre-hook: Se refiere al comando que detiene el servidor web, el que utilizaríamos nosotros mismos. El comando debe ir entrecomillado.
  • post-hook: Referido al comando que iniciará de nuevo el servidor web, entrecomillado.

Si usas un servidor web que no es Apache, debes sustituir apache2 por el nombre del servicio que corresponda.

Tras lanzar el comando en la terminal, empezarán las preguntas necesarias:

Dirección de correo-e

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): xxx@xxx.com

Debemos introducir nuestra dirección de correo-e, lo que nos permitirá realizar renovaciones de urgencia y recibir avisos de seguridad.

Términos del servicio

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a

Como cualquier servicio que usamos en Internet, tendremos que aceptar los términos del mismo. Introduciremos una A de «Agree«.

Uso de nuestra dirección de correo-e

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n

Si dejamos que nuestra dirección de correo-e se comparta con otras organizaciones que colaboran con Let’s Encrypt, recibiremos ciertos mensajes sobre sus actividades. Puedes aceptar (Y) o rehusar (N).

Dominios para los que se creará el certificado SSL gratis

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): pruebas.chachocool.com

Es posible crear un mismo certificado para varios dominios o subdominios, especificando uno tras otro separados por comas o espacios en blanco. En este ejemplo sólo necesito el certificado para el subdominio pruebas.chachocool.com.

Inmediatamente después de introducir el dominio o dominios se inicia el proceso, deteniéndose momentáneamente el servidor web, obteniendo el certificado, verificándolo y arrancando de nuevo el servidor web. Todo este proceso dura escasos segundos.

Es muy recomendable comprobar que el servidor web esté funcionando de nuevo, una vez que certbot ha finalizado el proceso:

~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-03-25 18:52:40 CET; 2min 51s ago
  Process: 16063 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 16074 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 16078 (apache2)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─16078 /usr/sbin/apache2 -k start
           ├─16079 /usr/sbin/apache2 -k start
           ├─16080 /usr/sbin/apache2 -k start
           ├─16081 /usr/sbin/apache2 -k start
           ├─16082 /usr/sbin/apache2 -k start
           └─16083 /usr/sbin/apache2 -k start

mar 25 18:52:39 debian98 systemd[1]: Starting The Apache HTTP Server...
mar 25 18:52:40 debian98 systemd[1]: Started The Apache HTTP Server.

Cómo configurar el certificado SSL gratuito para Apache en Debian

Si lo que quieres es instalar el certificado SSL para Apache en Debian, debes saber que la herramienta certbot ha obtenido he instalado tu nuevo certificado SSL gratuito en el sistema, pero no ha configurado el servidor web. Por tanto aún no podemos acceder con nuestro navegador usando HTTPS.

El certificado como tal no se instala en Apache, sino en el sistema. Tenemos que configurar Apache para solucionarlo. Editaremos la configuración del servidor virtual de Apache que está atendiendo al dominio que usamos. El archivo de configuración del servidor virtual se encuentra en /etc/apache2/sites-available/.

Si en lugar de un servidor virtual estamos usando el servidor por defecto, el archivo de configuración que necesitamos es /etc/apache2/sites-available/000-default.conf.

Cualquiera que sea el archivo de configuración lo editamos con nuestro editor favorito y privilegios de sudo:

~$ sudo nano /etc/apache2/sites-available/000-default.conf

En este archivo encontraremos un bloque <VirtualHost *:80> que se encarga de la configuración del servidor web para el protocolo HTTP.

Para poder trabajar con el protocolo HTTPS, añadiremos al final del archivo un bloque <VirtualHost *:443>. Podemos copiar el bloque para HTTP, cambiando el 80 por 443, ya que en esta guía vamos a configurar un servidor que ofrece el mismo contenido tanto por HTTP como por HTTPS.

En principio quedaría algo así:

<VirtualHost *:443>
        #ServerName www.example.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

En este ejemplo, estoy configurando el servidor por defecto, por lo que dejo comentada la directiva ServerName. Para un servidor virtual editaríamos el archivo de configuración correspondiente, dejando activa la directiva ServerName con el valor del dominio.

Ahora tenemos que añadir la configuración del certificado dentro de este bloque que estamos definiendo. Los distintos archivos que componen la certificación SSL se instalan bajo la ruta /etc/letsencrypt/live/.

Dentro de ese directorio existirá un directorio por cada certificado SSL que hayamos creado. En este ejemplo la ruta será /etc/letsencrypt/live/pruebas.chachocool.com/. Dentro de esta ruta están los archivos .pem que necesitamos para la configuración de Apache.

Sabiendo esto, ya podemos añadir las directivas SSLCertificateFile, SSLCertificateKeyFile y SSLCertificateChainFile con sus respectivos valores en la configuración para HTTPS.

Finalmente, el bloque de configuración que hemos añadido a la configuración del servidor principal o virtual de Apache quedaría algo así:

<VirtualHost *:443>
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/pruebas.chachocool.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/pruebas.chachocool.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/pruebas.chachocool.com/chain.pem

        LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

En tu caso, revisa que las rutas, los valores y la sintaxis sean correctos.

Antes de intentar aplicar la nueva configuración debemos asegurarnos de que el servidor web pueda trabajar con seguridad SSL, ya que por defecto no viene con esa configuración. En el caso de Apache añadimos el módulo SSL a la configuración con el comando a2enmod:

~$ sudo a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
  systemctl restart apache2

Para que entre en funcionamiento la nueva configuración, tal y como se nos indica, es necesario reiniciar Apache:

~$ sudo systemctl restart apache2

Ahora Apache ya puede trabajar con el servicio HTTPS y además se ha cargado la configuración SSL del dominio que deseábamos.

Lo podemos comprobar sencillamente abriendo el navegador e introduciendo el dominio precedido por https://. En el ejemplo de esta guía, visitaríamos https://pruebas.chachocool.com:

instalar certificado ssl apache debian
Accediendo al dominio con el certificado SSL gratis configurado

Como podemos ver, ya tenemos totalmente funcional el acceso por HTTP seguro a nuestra página web. El icono del candado cerrado indica que todo está correcto, y si pinchamos en él podremos acceder a los detalles del certificado SSL de nuestra web:

certificado ssl para mi web
Información del certificado SSL para nuestra web

Renovación de los certificados SSL

La renovación de los certificados SSL se hace automáticamente. En la carpeta /etc/letsencrypt/renewal/ se almacenan los archivos de configuración para la renovación de los certificados. Un archivo por cada certificado. Por ejemplo, el contenido del archivo /etc/letsencrypt/renewal/pruebas.chachocool.com.conf sería el siguiente:

# renew_before_expiry = 30 days
version = 0.28.0
archive_dir = /etc/letsencrypt/archive/pruebas.chachocool.com
cert = /etc/letsencrypt/live/pruebas.chachocool.com/cert.pem
privkey = /etc/letsencrypt/live/pruebas.chachocool.com/privkey.pem
chain = /etc/letsencrypt/live/pruebas.chachocool.com/chain.pem
fullchain = /etc/letsencrypt/live/pruebas.chachocool.com/fullchain.pem

# Options used in the renewal process
[renewalparams]
server = https://acme-v02.api.letsencrypt.org/directory
authenticator = standalone
account = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
post_hook = systemctl start apache2
pre_hook = systemctl stop apache2

El programador de tareas de Debian, el servicio cron, se encargará a partir de ahora de lanzar las renovaciones, por lo que los certificados se mantendrán renovados y funcionales de forma indefinida sin necesidad de tu intervención. Aunque nunca está de más una mínima supervisión de vez en cuando.

Conclusión

Ahora que ya sabes cómo conseguir certificados SSL gratis en Debian 9 para tu web, ya puedes ofrecer la garantía de seguridad a tus visitantes. Recuerda que Let’s Encrypt te ofrece estos certificados SSL gratis con el único inconveniente de que la validez es de 3 meses. Pero afortunadamente la renovación también es gratuita y sin limitación en el número de renovaciones.

¡Hey! ¿Sabes que leyendo este artículo y consiguiendo tu certificado SSL gratis te has ahorrado un buen dinero? ¡A lo mejor estás tan contento que deseas agradecérmelo! Si es así puedes hacerlo dejando una propina de 1 $ desde PayPal:

O, si te sientes especialmente agradecido, puedes invitarme a un café:

¡Gracias!

5/5 - (1 voto)

Deja un comentario

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.