SSL sobre ubuntu

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