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:
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:
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 🙂