Muchas gracias por la ayuda!

El mar, 11 mar 2025 a las 13:13, Gabriel Guillem Barceló Soteras (<
gbarc...@parlamentib.es>) escribió:

> El enlace del comando de curl es el certificado AC sinlo tienes disponible
> para su descarga en un servidor web (concepto PKI AIA). En las extensiones
> del certificado de servidor/cliente suele existir una URL de localización
> (descarga) de la CA que expidió dicho cert. Alternativamente puedes copiar
> manualmente el certificado PEM (base64) de AC raíz al directorio
> correspondiente. Sigue la guía del fabricante del SO.
>
> Si no controlas mucho el tema de PKI o TLS te recomiendo que hagas una
> revisión por pares de lo que haces con algun compañero de sistemas o
> cliente. Mantener una PKI local con openssl no es trivial.
> ------------------------------
> *From:* Guillermo E. Villanueva <guillermo...@gmail.com>
> *Sent:* Tuesday, March 11, 2025 1:17:54 PM
> *To:* Gabriel Guillem Barceló Soteras <gbarc...@parlamentib.es>
> *Cc:* Horacio Miranda <hmira...@gmail.com>; pgsql-es-ayuda <
> pgsql-es-ay...@postgresql.org>
> *Subject:* Re: Autenticación TSL
>
> Hola Gabriel, gracias por tu respuesta, el postgres está en un ununtu,
> segui los pasos y al intentar:
> curl -s http://authority_information_access.fqdn/root_ca.crt | openssl
> x509 | tee ${CA_PATH}/chain.pem | openssl x509 -noout -subject -issuer
>
> Me da
> Could not read certificate from <stdin>
> Unable to load certificate
> Could not read certificate from <stdin>
> Unable to load certificate
>
> Mi problema principal es que no se nada de SSL, y encamino mi
> configuración  basado en que con CA generada con openssl (autofirmados) si
> anduvo bien. Pienso que es un problema propio de Lets Encrypt
>
> El mar, 11 mar 2025 a las 5:03, Gabriel Guillem Barceló Soteras (<
> gbarc...@parlamentib.es>) escribió:
>
> Buenas, nosotros solo utilizamos certificado en el servidor, y los
> clientes son los que confian en dicho certificado (bien configurados). Me
> parece que también utilizas certificado en els servidor, como bien apuntas,
> la confianza de certificados es en dos sentidos. Yo intentaría:
>
>    1. Configurar cada host a nivel de SO para confiar en las AC(s) raíz
>    de PKI privadas. Cada organización suele mantenir sus plantillas con dicha
>    congifuración, via Ansible o similar. Debian y Fedora tienen el mismo
>    procedimiento pero cambian las rutas y el nombre de un comando:
>
>
>
> # Set variables based on the distribution
>
> if [ -f /etc/redhat-release ]; then
>
> PKG_MANAGER="yum install -y";
>
> CA_PATH="/etc/pki/ca-trust/source/anchors";
>
> UPDATE_CA="update-ca-trust";
>
> elif [ -f /etc/debian_version ]; then
>
> PKG_MANAGER="apt-get update && apt-get install -y";
>
> CA_PATH="/usr/local/share/ca-certificates";
>
> UPDATE_CA="update-ca-certificates";
>
> elif [ -f /etc/alpine-release ]; then
>
> PKG_MANAGER="apk add --no-cache";
>
> CA_PATH="/usr/local/share/ca-certificates";
>
> UPDATE_CA="update-ca-certificates";
>
> else \
>
> echo "Unsupported base image";
>
> exit 1;
>
> fi
>
> # Install necessary packages
>
> ${PKG_MANAGER} openssl curl ca-certificates
>
> # Add CA certificates
>
> curl -s http://authority_information_access.fqdn/root_ca.crt | openssl
> x509 | tee ${CA_PATH}/tu_root_ca.pem | openssl x509 -noout -subject
> -issuer
>
> # repite para otras AC(s)
>
> # Update CA certificates
>
> ${UPDATE_CA}
>
>
>
>    2. *Para el cliente*: como ahora mantienes la confianza del host base,
>    puedes utilitzar los .PEM generados por el sistema. Son ficheros que reúnen
>    todas las AC(s), en Fedora/EL
>    sslrootcert=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem. En PG
>    16+ existe sslrootcert=system
>    
> <https://www.postgresql.org/docs/16/libpq-connect.html#LIBPQ-CONNECT-SSLROOTCERT>.
>    Más información: https://www.postgresql.org/docs/13/libpq-ssl.html
>    https://www.postgresql.org/docs/13/runtime-config-connection.html
>    3. *Para el servidor*: Similar, pero no tienes que utilitzar el
>    fichero de AC(s) del sistema. A mi parecer, solo tendrías que poner la AC
>    privada en formato PEM con la que emites los certificados *del cliente*.
>    Puedes utilitzar la ruta tipo 
> /etc/pki/ca-trust/source/anchors/<tu_root_ca_id_clientes.pem>
>    como el paso 1.
>
>    
> https://www.postgresql.org/docs/13/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL
>
>
>
> Aún así, recomiendo utilitzar otros esquemas de autenticación como
> Kerberos (GSSAPI) para mantener las identidades centralizadas más
> facilmente.
>
>
>
> *From: *Horacio Miranda <hmira...@gmail.com>
> *Date: *Monday, 10 March 2025 at 20:38
> *To: *Guillermo E. Villanueva <guillermo...@gmail.com>
> *Cc: *pgsql-es-ayuda <pgsql-es-ay...@postgresql.org>
> *Subject: *Re: Autenticación TSL
>
> Dice que no conoce el CA.
>
> Agrega el CA de let’s encrypt a tu Linux o en un archivo donde conoce el
> CA de lets encrypt.
>
> Ahora estás usando TLS o quieres usar mTLS ?
>
>
>
> Regards,
>
> Horacio Miranda
>
>
>
>
>
> On 11 Mar 2025, at 5:37 AM, Guillermo E. Villanueva <
> guillermo...@gmail.com> wrote:
>
> 
>
> Buenas tardes! En los últimos días estuve trabajando en el proyecto de
> hacer funcionar postgres 13, con autenticación por certificados ssl, usando
> openssl y certificados firmados por una propia CA funcionó correctamente,
> pero cuando intento hacerlo con certificados Let's Encrypt para el
> servidor, no funciona.
>
>
>
> Desde el cliente con credenciales de lets encrypt
> psql "host=host.dominio.com dbname=postgres user=postgres
> sslmode=verify-ca sslcert=./fullchain.pem sslkey=./privkey.pem
> sslrootcert=./chain.pem"
> Error:
> psql: error: connection to server at " host.dominio.com" (ip), port 5432
> failed: SSL error: certificate verify failed
>
>
>
> Y en el log de postgres:
> 2025-03-10 15:29:18.080 CET [893999] [unknown]@[unknown] LOG:  connection
> received: host=ip_del_cliente port=55848
> 2025-03-10 15:29:18.093 CET [893999] [unknown]@[unknown] LOG:  could not
> accept SSL connection: tlsv1 alert unknown ca
>
> Tambien lo probé con certificados autofirmados para el cliente adaptando
> postgresql.conf y pg_hba.conf, pero no hay caso, no logro hacerlo
> funcionar.
>
>
> Alguno de por acá pudo hacer funcionar autenticación con Let's Encrypt?
>
>
>
> Desde ya muchas gracias por leer y por los comentarios que tengan.
>
>
>
> Saludos
>
>

Reply via email to