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} 1. 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 2. 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<http://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<http://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