Instalar certificado gratuito ssl con Let’s Encrypt en tomcat

Es comun utilizar Let’s Encrypt par poner certificados gratuitos seguros en nuestros dominios, ponerlos en apache o nginx es una tarea sencilla, pero todos hemos sufrido la tarea de poner un certificado seguro en un llavero (Java KeyStore) de tomcat.

Con esta pequeña entrada voy a explicar paso a paso como poner un certificado gratuito Let’s Encrypt en tomcat.

Para realizar los pasos necesitaremos tener instalado en el sistema keytool (viene con el jdk) y certboot (https://certbot.eff.org/).

Creamos un llavero JKS (letsencrypt.jks) con una clave RSA 2048, con la entrada de dominio (midominio.es)

keytool -genkeypair -alias simple-cert -keyalg RSA -keysize 2048 -keystore letsencrypt.jks -dname "CN=midominio.es" -storepass password12345

Agregamos una segunda clave RSA 4096 – (san-cert)

keytool -genkeypair -alias san-cert -keyalg RSA -keysize 4096 -keystore letsencrypt.jks -dname "CN=midominio.es" -storepass password12345

Creamos un CSR para simple-cert y un CSR para san-cert

keytool -certreq -alias simple-cert -keystore letsencrypt.jks -file midominio.csr -storepass password12345 -ext san=dns:midominio.es

Creamos el full certificate chain con certboot (certificado Let’s Encrypt).

certbot certonly --manual --csr midominio.csr --preferred-challenges "dns"

Nos creara una serie de certificados y debemos de quedarnos con el full certificate chain.

Successfully received certificate.

Certificate is saved at:            C:\Program Files (x86)\Certbot\bin\0000_cert.pem
Intermediate CA chain is saved at:  C:\Program Files (x86)\Certbot\bin\0000_chain.pem
Full certificate chain is saved at: C:\Program Files (x86)\Certbot\bin\0001_chain.pem
This certificate expires on 2023-03-07.

Añadimos el certificado al keystore (clic YES cuando pregunte).

keytool -importcert -alias simple-cert -keystore letsencrypt.jks -storepass password12345 -file 0001_chain.pem

Y ya tendriamos el certifiado creado y solo necesitariamos añadirlo en el fichero de configuración del tomcat (server.xml).

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true" URIEncoding="UTF-8"
keystoreFile="conf\ssl\letsencrypt.jks"
keystorePass="password12345" keyAlias="simple-cert"
clientAuth="false" sslProtocol="TLS" />

—- RENOVAR CERTIFICADO —-

Los certificados Let’s Encrypt , caducan a los tres meses, con lo que es posible que al intentar reniovarlo nos de problemas, lo unico que tendremos es que realizar los mismos pasos y cuando lancemoz el comando certbot, crear la entrada dns que nos pidan por consola.

Please deploy a DNS TXT record under the name:

_acme-challenge.midominio.es.

with the following value:

t8TpRgmScIuzwwrXgsCEhqt1VaV4s7EkxEziWoOCJ2h

Iniciar sesión en centos 7 sin contraseña con gnome

Nos habra pasado alguna vez que cuando usamos un entorno grafico nos da pereza andar metiendo la contraseña nmada mas iniciar sesión.

Con esta pequeña entrada voy a explicar como iniciar sesión en centos 7 con entorno grafico gnome.

Editaremos el fichero de configuración de gnome:

vi /etc/gdm/custom.conf

Y añadiremos lo siguiente debajo de default cambiando la variable nombre_usuario pro el usuario que queramos que inicie sesión sin contraseña:

AutomaticLoginEnable=true
AutomaticLogin=nombre_usuario

Guardamos el fichero y reiniciamos

Y ya podemos ver como iniciamos sesión sin introducir contraseña.

Como solucionar error: The root filesystem requires a manual fsck

Es posible que tras un reinicio en nuestro linux nos encontramos el error “The root filesystem requires a manual fsck” y no podemos arrancar nuestro sistema operativo, pues que no cunda el pánico que todo tiene solución.

Error fatídico

Solo necesitamos o desde la propia consola del initramfs o desde un livecd ejecutar el comando fsck (check and repair a Linux file system) sobre la partición fatídica.

fsck /dev/sdaParticionFallida

Contestaremos que si (yes) a todas las preguntas planteadas y ya tendremos recuperado nuestro sistema operativo linux.

fsck /dev/ubuntu–vg-ubuntu–lv

¿Como matar varios procesos a la vez en linux?

Posiblemente os ha sucedido en multitud de ocasiones, que intentáis matar un proceso en linux y os encontráis que aparece varias veces.

Y es bastante molesto ir uno a uno con kill -9 matandolos.

Pues con esta entrada os voy a explicar de matarlos todos con un simple comando.

En el ejemplo que voy a utilizar el escritorio se ha quedado tostado y quiero matar todos los procesos del navegador chromiun y para ello haré una búsqueda del proceso con ps + grep .

root@ubuntu:/# ps -aux | grep chrom |

root      2203 17.4  2.5 2633452 207796 ?      Sl   10:34   0:02 /snap/chromium/1967/usr/lib/chromium-browser/chrome --password-store=basic
root      2383  0.2  0.7 260184 58056 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=zygote --no-zygote-sandbox --change-stack-guard-on-fork=enable
root            2384  0.1  0.7 260176 58252 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=zygote --change-stack-guard-on-fork=enable
root      2386  0.0  0.1 260200 15344 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=zygote --change-stack-guard-on-fork=enable
root      2559  0.0  0.3 483756 25968 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=broker

A continuación con awk ‘{print $2}’ obtenemos el id de cada proceso.

root@ubuntu:/# ps -aux | grep chrom | awk '{print $2}'
864
2203
2383
2384
2386
2416
2420
2437
2458
2459
2559
2574
2651

Teniendo el listado de procesos solo nos queda matarlos todos a la vez y lo haremos con xargs kill -9

ps -aux | grep chrom | awk '{print $2}' | xargs kill -9

Y con este sencillo comando, podemos matar varios procesos a la vez en linux.

Solucionar erorr mysql8: Your password does not satisfy the current policy requirements.

Es posible que intentando poner una contraseña en mysql8 os haya saltado el error “Your password does not satisfy the current policy requirements.” o directamente en castellano “Su contraseña no cumple con los requisitos de la política actual.”, que claramente indica que la contraseña no cumple las politicas de seguridad.

No siendo lo recomendable se puede dar el caso que queramos poner una contraseña insegura y os lo voy a explicar a hacer a continuación.

Nos conectamos en la consola de mysql8 y deshabilitamos la politica de seguridad.

SET GLOBAL validate_password.policy = 0;

Y despues de lanzar esta instrucción ya podemos poner nuestra contraseña insegura.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'T3mporal';

Si queremos volver a dejar la configuración como estaba bastara con habilitar la politica de seguridad.

SET GLOBAL validate_password.policy = 0;

¿Como recuperar espacio en ficheros ya eliminados?

En varias ocaciones nos hemos visto en la situación de que hemos borrado ciertos ficheros en linux y no se ha liberado el espacio y lo que es peor es que vemos valores diferentes al calcuar el espacio con df y ls

Voy a explicar como hacerlo de una manera muy sencilla.

Comprobamos que no se este usando el fichero y se puede liberar el espacio.

lsof | grep deleted
postdrop   9155                 root    4u      REG                8,2         0     114958 /var/spool/postfix/maildrop/AC9221C10E (deleted)
postdrop   9927                 root    4u      REG                8,2         0     118127 /var/spool/postfix/maildrop/E9A721CD6F (deleted)
postdrop  11171                 root    4u      REG                8,2         0     118540 /var/spool/postfix/maildrop/8F4D31CF0C (deleted)

[root@base]# ls -lh /proc/9155/fd/*
lrwx------ 1 root root 64 Jun 20  2021 /proc/9155/fd/4 -> /var/spool/postfix/maildrop/AC9221C10E (deleted)

Con los resultados obtenidos, ejecutamos el comando con el id que deseemos borrar

: > /proc/9155/fd/4

Y con estos pasos ya habremos liberado el espacio.

Guardar una cadena de varias lineas en un archivo en bash con EOF

Seguramente nos ha pasado en alguna ocasión que tenemos que copiar y pegar texto en linux y no sabemos como guardarlo en un fichero nuevo del tiron.

Para este cometido podemos utilizar EOF, que nos permite guardar todo el contenido que vayamos pegando por pantalla encosertado entre las cadenas EOF.
A continuación pongo un ejemplo de como pegando por pantalla las siguientes lineas creamos un scrips que una vez ejecutado nos indica la fecha (date) y el espacio libre en disco (df -h).
cat <<EOF > fecha-espacio.sh
#!/bin/bash
date
df -h
EOF
/bin/bash/ print.sh
Wed Nov 10 10:23:55 CET 2021
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             2.0G 1002M  887M  54% /


Como limpiar memoria cache, inodes y dentries

Habitualmente en linux, nos encontramos que alguna aplicación denamica no funciona correctamente y es debido que no libera memoria cacheada.

Voy a explicar como liberar memoria cache, inodes y dentries y asi poder resolver este angustioso problema.

Si queremos eliminar cache ejecutaremos:

sync; echo 1 > /proc/sys/vm/drop_caches

Si queremos eliminar inodes y dentries ejecutaremos:

sync; echo 2 > /proc/sys/vm/drop_caches

Si queremos elimiar cache, inodes y dentries ejecutaremos:

sync; echo 3 > /proc/sys/vm/drop_caches

Todo esto podemos incluirlo como tarea nocturna programada en el crontab y olvidarnos de este problema:

crontab -e

0 2 * * * sync; echo 3 > /proc/sys/vm/drop_caches

Cómo ajustar el uso de la memoria virtual (swap) en centos con Swappiness

Los sistemas somo muy de instalar todo por defecto y nunca miramos para estos problemas, pero se puede dar el caso de un mal ajuste de la memoria virtual (swap) y vernos en la necesidad de tener que ajustarla.

Voy a explicar como cambiar en un s.o centos.

Lo primero de todo vemos cual es el porcentaje actual utilizado:

cat /proc/sys/vm/swappiness
30

En el ejemplo vemos que esta configurado en el 30%, pongamos el caso de que nos parezca demasiado alto y lo queremos pasar al 10%.

La haremos con el siguiente comando.

sysctl vm.swappiness=10

Que nos gusta el compartimento y quremos dejar el cambio persistente, para que se utlice tras un reinicio, etc.

Pues editamos el fihero /etc/sysctl.conf y añadimos vm.swappiness=10 .

vi /etc/sysctl.conf

vm.swappiness=10

Y asi poco a poco podemos ir ajustando la memoria swap a nuestras necesidades.

Activar rc.local en CentOS 7

En las distribuciones de linux es muy habitual arrancar servicios al inicio directamente desde el archivo rc.local.
Desde la versión CentOS 7 ya no funciona de manera predefinida y tenemos que habilitar el servicio rc-local con los siguientes pasos.

Habilitamos permisos de ejecución al fichero.

chmod +x /etc/rc.d/rc.local

Activamos el servicio.

systemctl enable rc-local

Arrancamos el servicio.

systemctl start rc-local

Con estos pasos ya se arrancaran los scripts al inicio.