Hoy te mostrare como configurar certificados ssl en Ubuntu Server 20.04 para los sitios web de tu servidor.

Como primer paso necesitamos cumplir con los siguientes requisitos:

Que es un certificado ssl

Un certificado ssl (Secure Sockets Layer o capa de conexión segura) es un estándar de seguridad global que permite la transferencia de datos cifrados entre un navegador y un servidor web.

Es utilizado por millones de empresas e individuos en línea a fin de disminuir el riesgo de robo y manipulación de información confidencial (como números de tarjetas de crédito, nombres de usuario, contraseñas, correos electrónicos, etc.) por parte de hackers y ladrones de identidades. Básicamente, la capa SSL permite que dos partes tengan una «conversación» privada.

Dichos certificados para validar su autenticidad y seguridad deben ser emitidos por una Autoridades de certificación que son organizaciones de confianza a cargo de verificar la identidad y legitimidad de la entidad que solicita un certificado.

En nuestro caso usaremos Let’s Encrypt, Una autoridad certificadora sin fines de lucro que proporciona certificados ssl a 240 millones de sitios web.

Instalación del Software para generar certificados ssl

Como primero paso instalaremos el software necesario para la solicitud de los certificados ssl, de acuerdo a la documentación de let’s encrypt requerimos acceso la terminal del servidor para poder generar certificados. Como siguiente paso iremos a la pagina de Certbot la cual te pongo a continuación:

https://certbot.eff.org/

Dentro de la pagina en el formulario seleccionaremos el software de servidor web que estamos usando y el sistema operativo de nuestro servidor. Los cuales para nuestro caso son apache y ubuntu server 20.04

Esto cargara las instrucciones para la instalacion las cuales te comento a continuación:

1.- Verificamos que nuestra version de snap este actualizada con el siguiente comando:

$ sudo snap install core; sudo snap refresh core

2.- Instalamos certbot con el siguiente comando:

$ sudo snap install --classic certbot

3.- Preparamos el comando de certbot:

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Con estos sencillos pasos ya tenemos instalado certbot en nuestro ubuntu server 20.04. El siguiente paso es crear nuestro primer certificado si recuerdas en post anteriores configuramos el subdominio tester.jcastaneda.com.

Crear certificado ssl para nuestro dominio

Para crear un certificado ssl hay 2 comandos que se puede utilizar:

el primero que te permite obtener un certificado y te brinda una guia para configurar el protocolo https y configura automaticamente el certificado:

$ sudo certbot --apache

El segundo que solo te permite obtener un certificado y ya te encargaras de configurarlo manualmente:

$ sudo certbot certonly --apache

Para nuestro caso utilizaremos la primera opcion ya que nos permite generar el certificado y configurar apache automaticamente, la primera vez nos pedira un correo lo ingresamos y presionamos enter:

$ sudo certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): 

El siguiente paso sera aceptar los terminos y condiciones de letsencript asi que para continuar presionamos «Y» y continuamos:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: 

Después nos pedira permiso para compartir nuestro correo con la Electronic Frontier Foundation es nuestra decisión «y» si o «n» para no.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, 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: 

Ahora ya podemos continuar con la generacion del certificado como siguiente paso veremos una lista de los virtualhost que estan configurados en apache2 ingresamos el numero correspondiente al subdominio seleccionado para nuestro caso tester.jcastaneda.com asi que ingresamos 1.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: tester.jcastaneda.com
2: php56.local
3: php70.local
4: php71.local
5: php72.local
6: php73.local
7: php74.local
8: php80.local
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

Ya que seleccionamos la opcion el sistema comenzara a crear el subdominio y activara https en apache2 y configurara los virtualhost para redireccionar de http a https de forma automatica.

Requesting a certificate for tester.jcastaneda.com
Performing the following challenges:
http-01 challenge for tester.jcastaneda.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/tester.jcastaneda.com-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/tester.jcastaneda.com-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/tester.jcastaneda.com-le-ssl.conf
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/tester.jcastaneda.com.conf to ssl vhost in /etc/apache2/sites-available/tester.jcastaneda.com-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://tester.jcastaneda.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: jorge@jcastaneda.com).

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/tester.jcastaneda.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/tester.jcastaneda.com/privkey.pem
   Your certificate will expire on 2021-06-03. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again with the "certonly" option. To non-interactively
   renew *all* of your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Configurar https en Firewall de Ubuntu Server 20.04

Ya que se genero el certificado y se configuro con exito para poder ver los resultados debemos de configurar el Firewall de Ubuntu Server 20.04 con el siguiente comando para permitir el acceso a https:

sudo ufw allow https

Verificaro Certificado ssl en navegador web

Ingresa a un navegador desde un equipo en la red y podras ver el resultado:

Verificar Certificado SSL desde un navegador.
Categorías: servidores

5 comentarios

Roberto · noviembre 29, 2021 a las 11:59 pm

Excelente tu explicación, me funcionó perfecto. Solo una consulta, yo tengo un certificado comprado en GoDaddy, entiendo que esto me instalo otro certificado, y me dice que solo es valido por 3 meses. Como podría instalar el certificado que compre? Muchas Gracias. Saludos.

    Jorge Castañeda · diciembre 1, 2021 a las 2:43 am

    Hola que tal buen dia. Me da gusto que te haya servido mi blog. Te comento que este tipo de certificados como comentas tienen una vigencia de 3 meses lo interesante de esto es que se pueden renovar constantemente y es lo que yo realizo en mis servidores.

    En tu caso si quieres instalar un certificado de otro proveedor primero tienes que copiarlo en tu servidor a una carpeta como por ejemplo /etc/apache2/ssl

    posteriormente tienes que configurar el virtualhost para que apunte a la ubicación de este certificado. Te comparto un ejemplo para que sea mas facil.

    /etc/apache2/sites-available/tester.jcastaneda.com-le-ssl.conf




    ServerAdmin webmaster@localhost
    ServerName tester.jcastaneda.com
    DocumentRoot /var/www/tester.jcastaneda.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /etc/letsencrypt/live/tester.jcastaneda.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/tester.jcastaneda.com/privkey.pem


    Claro que este es tema de otra entrada pero es una buena idea para aclarar tus dudas.

    Saludos y

    Estamos en Contact

Paolo · febrero 16, 2022 a las 3:17 pm

Hola muy buena la expliación de instalar los certificados, lo que me queda la duda, es como hago para que se renueven constantemente? he revisado en mi crontab y no veo que se haya guardado alguna tarea que renueve los certificados, si tienes algún contenido sobre esto te lo agradezco, muchas gracias

    Jorge Castañeda · febrero 16, 2022 a las 3:38 pm

    Hola que tal Paolo. Claro que si para poder renovar tus certificados de forma automatica debes de agregar a tu crontab el siguiente comando certbot renew y ejecutarlo 1 vez al dia con el objetivo de revisar la vigencia de los certificados que tengas instalados. y automaticamente se renovaran. Espero con esto resolver tu duda saludos y te invito a seguirme en mis redes sociales.

Julio · junio 30, 2022 a las 6:58 pm

MUCHAS GRACIAS, simple y efectivo 🙂

Deja una respuesta

Marcador de posición del avatar

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