Todos los pasos de forma resumida
sudo apt install apache2 sudo systemctl enable apache2 sudo systemctl status apache2 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod ssl sudo apt install certbot python3-certbot-apache sudo certbot --apache
–seguir las instrucciones, si todo va bien se generan los certificados en /etc/letsencrypt/live/sires.tunjasoporte.890m.com/
en :/etc/apache2/sites-available se crea un nuevo archivo de configuración y los tres archivos actuales se pueden copiar a otro destino como copia de seguridad.
si se quiere configurar un certificado adicional
sudo certbot --apache -d audsis.tribunalsuperiortunja.gov.co
y se selecciona la opcion 1 1: 000-default-le-ssl.conf
nano sires.tunjasoporte.890m.com.conf (pilas! son identado es con tabulaciones) <VirtualHost *:443> ServerName sires.tunjasoporte.890m.com ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/sires.tunjasoporte.890m.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/sires.tunjasoporte.890m.com/privkey.pem </VirtualHost> sudo a2ensite sires.tunjasoporte.890m.com.conf systemctl reload apache2 se verifica que no tenga ningun error, debe salir asi: Syntax OK sudo apache2ctl configtest
Generar un certificado SSL de forma gratuita para apache
Pilas! antes de importar se deben activar los siguientes módulos para que funcione ssl:
#sudo a2enmod proxy
#sudo a2enmod proxy_http
#sudo a2enmod ssl -importantísimo para que funcione ssl cuando se importa
en el directorio /etc/apache2/sites-available crear un archivo de configuracion ej.
# nano audsis.tribunalsuperiortunja.gov.co.conf
<VirtualHost *:80> ServerName audsis.tribunalsuperiortunja.gov.co DocumentRoot /var/www/html/ </VirtualHost>
después se activa el sitio
#sudo a2ensite audsis.tribunalsuperiortunja.gov.co.conf
y se reinicia el apache
#systemctl reload apache2
ahora si se puede generar el certificado
Para instalar un certificado SSL en Apache2 en Ubuntu, puedes seguir estos pasos:
1. Instala el paquete `certbot`: Certbot es una herramienta que te ayudará a obtener y configurar automáticamente un certificado SSL gratuito de Let’s Encrypt. Puedes instalarlo ejecutando el siguiente comando:
sudo apt install certbot python3-certbot-apache
2. Ejecuta Certbot para obtener el certificado SSL: Después de instalar Certbot, puedes ejecutarlo para obtener un certificado SSL y configurarlo en Apache. Utiliza el siguiente comando:
sudo certbot --apache
Certbot te guiará a través de un asistente interactivo que te pedirá información para generar y configurar el certificado. Esto incluirá tu dirección de correo electrónico y si deseas redireccionar automáticamente el tráfico HTTP a HTTPS (lo cual es una buena práctica).
Pilas, sólo es posible crear un certificado SSL para un dominio registrado, por lo tanto, cuando se vaya a configurar, es necesario que el registro del dominio se encuentre apuntando a la dirección ip del servidor donde se esta generando el certificado.
tiene que salir un mensaje como el siguiente
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/tribunalsuperiortunja.gov.co/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/tribunalsuperiortunja.gov.co/privkey.pem
Your cert will expire on 2024-01-15. 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
para tener en cuenta: el certificado se genera en una nueva carpeta en el directorio /etc/letsencrypt/live/»nombre del dominio»/ y dentro de ella se encuentran dos archivos esenciales: la llave privada privkey.pem y el certificado fullchain.pem.
3. Configura la renovación automática: Let’s Encrypt proporciona certificados SSL con una validez de 90 días. Para asegurarte de que el certificado se renueve automáticamente, se configura un cron job durante el proceso de instalación de Certbot. No es necesario hacer nada adicional, ya que Certbot se encargará de la renovación automática de los certificados.
4. Verifica la configuración del certificado SSL:Una vez que Certbot haya terminado, deberías tener un certificado SSL válido instalado en tu servidor Apache2. Puedes verificar la configuración del certificado y asegurarte de que todo esté en orden ejecutando:
sudo apache2ctl configtest
Si obtienes un mensaje «Syntax OK», significa que la configuración es correcta.
5. Reinicia Apache: Para que los cambios surtan efecto, reinicia Apache2 con el siguiente comando:
sudo systemctl restart apache2
6. Verifica la configuración SSL: Puedes verificar si la configuración SSL está funcionando correctamente visitando tu sitio web en un navegador y asegurándote de que la conexión sea segura (deberías ver un candado o un indicador similar en la barra de direcciones).
Eso es todo. Ahora tienes SSL habilitado en tu servidor Apache2 en Ubuntu y tu sitio web debería estar accesible a través de HTTPS de forma segura. Ten en cuenta que debes renovar el certificado antes de su fecha de vencimiento, pero Certbot ya se encargará de esto si has configurado la renovación automática.
Exportar certificado SSL a formato PFX
Para exportar un certificado SSL obtenido con Certbot a un formato PFX (Personal Information Exchange), que es un formato de certificado que incluye la clave privada, sigue estos pasos:
1. Ubica los archivos del certificado SSL: Los archivos del certificado SSL obtenidos con Certbot se encuentran en la carpeta `/etc/letsencrypt/live` en el servidor. Puedes listar los dominios para los que tienes certificados utilizando:
ls /etc/letsencrypt/live
puedes ver la información de los certificados
certbot certificates
Selecciona el dominio para el que deseas exportar el certificado.
2. Exporta la clave privada y el certificado en formato PKCS12: Utiliza OpenSSL para exportar la clave privada y el certificado en un archivo PKCS12 (PFX). Reemplaza `example.com` con tu dominio y elige un nombre para el archivo PFX de salida (por ejemplo, `certificado.pfx`):
sudo openssl pkcs12 -export -out /ruta/para/el/certificado.pfx -inkey /etc/letsencrypt/live/example.com/privkey.pem -in /etc/letsencrypt/live/example.com/fullchain.pem
Este comando creará un archivo PFX que contendrá la clave privada y el certificado.
3. Establece una contraseña para el archivo PFX: OpenSSL te solicitará que ingreses una contraseña para proteger el archivo PFX. Asegúrate de recordar esta contraseña, ya que la necesitarás para importar el certificado.
4.Copia o descarga el archivo PFX: Puedes copiar el archivo PFX a un directorio seguro o descargarlo a tu máquina local utilizando herramientas de transferencia de archivos como `scp` o un cliente de FTP.
5. Uso del archivo PFX: Ahora puedes usar el archivo PFX en aplicaciones que admitan este formato, como servidores web, servicios de correo electrónico, etc. Al importar el PFX, generalmente se te pedirá la contraseña que estableciste al exportar el archivo.
Ten en cuenta que debes proteger el archivo PFX, ya que contiene la clave privada del certificado. Almacenarlo en un lugar seguro y protegido con contraseña es fundamental para mantener la seguridad de tus certificados.
Importar certificado SSL de formato PFX
Para importar un certificado PFX en Ubuntu, puedes usar la herramienta `openssl`. Aquí hay un conjunto de pasos básicos que puedes seguir:
1. Instalar OpenSSL: Asegúrate de que OpenSSL esté instalado en tu sistema. Puedes instalarlo con el siguiente comando:
sudo apt-get update sudo apt-get install openssl
2. Importar el Certificado PFX: Utiliza el siguiente comando para importar el certificado PFX:
openssl pkcs12 -in tu_certificado.pfx -out fullchain.pem -clcerts -nokeys
Este comando toma el certificado PFX (`tu_certificado.pfx`) y lo convierte a formato PEM (`fullchain.pem`).
3.Extraer la Clave Privada: Para extraer la clave privada, utiliza el siguiente comando:
openssl pkcs12 -in tu_certificado.pfx -out privkey.pem -nocerts -nodes
Esto creará un archivo (`privkey.pem`) que contiene la clave privada.
Configuración de certificado SSL en servidor apache
Supongamos que tienes tu certificado en un archivo llamado `fullchain.pem` y tu clave privada en un archivo llamado `privkey.pem`.
1. Abre el archivo de configuración del sitio en Apache. Puedes usar un editor de texto como `nano` o `vi`. Por ejemplo:
sudo nano /etc/apache2/sites-available/tu_sitio.conf
2. Dentro del archivo de configuración, asegúrate de tener las siguientes líneas:
<VirtualHost *:80> ServerName audsisprueba-ddns.net DocumentRoot /var/www/html/sitio SSLEngine on SSLCertificateFile /etc/letsencrypt/live/sitio/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/sitio/privkey.pem </VirtualHost>
o para un proxy inverso
<VirtualHost *:443> ServerName audsisprueba.ddns.net ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ SSLCertificateFile /etc/letsencrypt/live/audsisprueba.ddns.net/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/audsisprueba.ddns.net/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
Asegúrate de reemplazar «tu_domino.com», «/ruta/a/tu/sitio», «/ruta/a/tu_certificado.pem», y «/ruta/a/tu_clave_privada.pem» con los valores correctos para tu caso.
3. Guarda y cierra el archivo.
4. Habilita el sitio SSL y reinicia Apache:
sudo a2ensite tu_sitio.conf sudo systemctl restart apache2
Estos comandos habilitarán el sitio con la configuración SSL y reiniciarán Apache para que los cambios surtan efecto.
Ver información del certificado SSL
Para ver la información de un certificado SSL en formato PEM, puedes usar el comando `openssl`. Aquí hay un ejemplo:
openssl x509 -in fullchain.pem -text -noout
Este comando mostrará información detallada sobre el certificado, incluyendo detalles como el emisor, el titular, la validez, la clave pública y otros atributos.
Asegúrate de reemplazar «fullchain.pem» con el nombre real de tu archivo. Si el certificado está protegido por una contraseña, también se te pedirá ingresar la contraseña para desbloquearlo.
Si solo necesitas información específica, como la fecha de vencimiento, puedes ajustar el comando según tus necesidades. Por ejemplo, para ver solo la fecha de vencimiento, puedes usar:
openssl x509 -in tu_certificado.pem -noout -enddate
Configuracion de un proxy inverso para tomcat
Para configurar Apache como proxy inverso para Tomcat con SSL en Ubuntu, sigue estos pasos:
1. Asegúrate de tener Apache y Tomcat instalados y configurados.
2. Instala Certbot y obtén un certificado SSL para tu dominio.
3. Habilita los módulos necesarios en Apache:
sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod ssl
4. Crea un archivo de configuración para tu sitio SSL:
Puedes crear un archivo de configuración específico para tu sitio SSL en `/etc/apache2/sites-available`. Por ejemplo, puedes crear un archivo llamado `mi-sitio-ssl.conf`:
sudo nano /etc/apache2/sites-available/mi-sitio-ssl.conf
Dentro de este archivo, configura el virtual host para que funcione como proxy inverso con SSL. Asegúrate de especificar la ubicación de tus archivos de certificado SSL y la dirección IP y el puerto de Tomcat. Aquí tienes un ejemplo de configuración:
<VirtualHost *:443> ServerName tu_domino ServerAdmin tu_email ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ SSLEngine on /esta linea podría generar problemas SSLCertificateFile /etc/letsencrypt/live/tu_domino/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/tu_domino/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost>
Reemplaza `tu_domino_o_direccion_ip` con tu dominio o (dirección IP – dirección ip no funciona) y asegúrate de que las rutas a los archivos de certificado sean correctas.
5. Habilita el sitio SSL:
sudo a2ensite mi-sitio-ssl.conf
6. Configura Apache para redirigir automáticamente las solicitudes HTTP a HTTPS: Puedes agregar reglas para redireccionar automáticamente las solicitudes HTTP a HTTPS en el archivo de configuración de tu sitio no SSL. Por ejemplo, en el archivo `/etc/apache2/sites-available/mi-sitio.conf`, puedes agregar lo siguiente dentro del virtual host no SSL:
<VirtualHost *:80> ServerName tu_domino_o_direccion_ip ServerAdmin tu_email Redirect permanent / https://tu_domino_o_direccion_ip/ </VirtualHost>
7. Habilita la configuración de redirección HTTP a HTTPS:
sudo a2ensite mi-sitio.conf
8. Verifica la configuración y reinicia Apache:**
sudo systemctlsudo apache2ctl configtest restart apache2
Ahora, Apache actuará como un proxy inverso para Tomcat con SSL. Asegúrate de que tu firewall permita el tráfico en los puertos 80 y 443 para que puedas acceder a tu aplicación a través de HTTPS.
Recuerda configurar tu aplicación web en Tomcat para que funcione correctamente con HTTPS y asegurarte de que el puerto 8080 (o el puerto que estés utilizando en Tomcat) esté abierto en tu firewall si es necesario.
Actualizar certificados de seguridad
Primero se deben cambiar el registro de dominio para que apunte al servidor con acceso a la renovacion
cd /etc/letsencrypt/live/
Para ver la información actual de los certificados
certbot certificates
Se ordena la renovacion
sudo certbot renew
se vuelve a ver la información del certificado
certbot certificates
se exportan los certificados
root@:/etc/letsencrypt/live# sudo openssl pkcs12 -export -out /home/ubuntu/certificados/adrina.pfx -inkey /etc/letsencrypt/live/adrina.tribunalsuperiortunja.gov.co/privkey.pem -in /etc/letsencrypt/live/adrina.tribunalsuperiortunja.gov.co/fullchain.pem
Enter Export Password: Se define un nuevo password
Verifying - Enter Export Password: Se define un nuevo password
se copian de la carpeta de donde fueron exportados
Todo hasta aquí! volver a enrutar las ip del dominio.
Podría ser de utilidad para la creación del certificado de seguridad; no tiene que ver con la renovación:
199 cd /etc/apache2/sites-available/
200 ls
201 nano cargos.tunjasoporte.890m.com.conf
202 nano 000-default.conf
203 ls
204 nano adrina.tribunalsuperiortunja.gov.co
205 ls
206 sudo a2ensite
207 sudo a2ensite adrina.tribunalsuperiortunja.gov.co
208 ls
209 rm adrina.tribunalsuperiortunja.gov.co
210 sudo certbot --apache -d adrina.tribunalsuperiortunja.gov.co
211 sudo certbot --apache -d audsis.tribunalsuperiortunja.gov.co
212 sudo certbot --apache -d tribunalsuperiortunja.gov.co