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