Re: Autenticación TSL

From: Jairo Graterón <jgrateron(at)gmail(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
Cc: Juan <smalltalker(dot)marcelo(at)gmail(dot)com>, Enrique Herrera Noya <enrique(dot)herreranoya(at)gmail(dot)com>, pgsql-es-ayuda(at)lists(dot)postgresql(dot)org
Subject: Re: Autenticación TSL
Date: 2025-03-11 17:31:24
Message-ID: CALnU-rNR9+CAaQeWO509=dC4emiROopc_t86OVFr+8h1uMB7Qw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hice la prueba con un certificado Lets encrypt y funciona correctamente.

[image: image.png]

También adjunto el archivo ca.pem que contiene los dos certificados CA de
Lets Encrypt, que se usarán tanto en el servidor como en el cliente.

Observa que en la segunda conexión no usé el certificado cliente (el mismo
del servidor) porque psql lo omite porque especificaste el modo verify-ca

Hay otros modos como verify-full, y también es posible autenticar sin
password (usando sólo el certificado) pero eso
requiere otras configuraciones.

Muchas cosas aprendí de esta presentación

https://momjian.us/main/writings/pgsql/securing.pdf

Saludos.

El mar, 11 mar 2025 a las 9:44, Guillermo E. Villanueva (<
guillermovil(at)gmail(dot)com>) escribió:

> Gracias por tu aporte Jairo!
> Hay algo que no entiendo, a los certificados de clientes los genero con
> ca.crt (custom CA para mi server), en el postgresql.conf tengo ssl_ca_file
> = /var/lib/postgres/13/ssl/ca.crt.
> Entonces para que necesitaría hacer el paso que me decis?
>
> Si ejecuto:
> openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt chain.pem
>
> Me da:
> chain.pem: OK
>
>
> El lun, 10 mar 2025 a las 15:37, Jairo Graterón (<jgrateron(at)gmail(dot)com>)
> escribió:
>
>> Puede ser un error en la cadena de confianza.
>>
>> El certificado de Let's Encrypt depende de otra CA,
>>
>> [image: image.png]
>>
>> Se deben agregar los dos certificados en formato PEM en el archivo CA de
>> postgresql.
>>
>> 1. CN=R10
>> 2. CN=ISRG Root X1
>>
>> El lun, 10 mar 2025 a las 14:19, Guillermo E. Villanueva (<
>> guillermovil(at)gmail(dot)com>) escribió:
>>
>>> Gracias Juan. Probé eso y el problema persiste
>>> Mi pregunta apunta mas a ver si hay alguien que lo haya podido hacer
>>> funcionar con Let´s encrypt, ya que si me funcionó con certificados
>>> autofirmados en ambos lados.
>>>
>>>
>>> El lun, 10 mar 2025 a las 15:00, Juan (<smalltalker(dot)marcelo(at)gmail(dot)com>)
>>> escribió:
>>>
>>>> existe un comando update-ca-certificates cambia en cada distro....
>>>> salu2
>>>>
>>>> On Mon, Mar 10, 2025 at 2:00 PM Guillermo E. Villanueva <
>>>> guillermovil(at)gmail(dot)com> wrote:
>>>>
>>>>> Enrique, gracias por tu respuesta
>>>>> en las pruebas que realicé, en el server a la ca la agrego en
>>>>> postgresl.conf con el parámetro ssl_ca_file = '/..../ca.crt' eso no
>>>>> es suficiente? acaso mi comando para generarla:
>>>>> openssl req -new -x509 -days 365 -nodes -out ca.crt -keyout ca.key
>>>>> -subj "/CN=root-ca"
>>>>> no la agrega automáticamente en las ca conocidas?
>>>>> Te referis del lado del cliente?
>>>>>
>>>>> El lun, 10 mar 2025 a las 13:44, Enrique Herrera Noya (<
>>>>> enrique(dot)herreranoya(at)gmail(dot)com>) escribió:
>>>>>
>>>>>> lo dice el log:
>>>>>> 2025-03-10 15:29:18.093 CET [893999] [unknown](at)[unknown] LOG: could
>>>>>> not accept SSL connection: tlsv1 alert unknown ca
>>>>>>
>>>>>> debes agregar el CA como CA conocido
>>>>>>
>>>>>> saludos
>>>>>>
>>>>>>
>>>>>> El 10-03-25 a las 13:36, Guillermo E. Villanueva escribió:
>>>>>>
>>>>>> 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](at)[unknown] LOG:
>>>>>> connection received: host=ip_del_cliente port=55848
>>>>>> 2025-03-10 15:29:18.093 CET [893999] [unknown](at)[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
>>>>>>
>>>>>>
>>>>>> Enrique Herrera Noya
>>>>>> --
>>>>>> +56 992303151
>>>>>> Red Hat Certified Engineer RHCE Nº100223072 (RH6.0)
>>>>>> Red Hat Certified System Administrato RHCSA Nº100223072 (RH6.0)
>>>>>> Red Hat Certified Technician (RHCT) Nº605010753835478 (RH5.0)
>>>>>> Novell Certified Linux Professional CLP 10
>>>>>> Red Hat Delivery Specialist -Container Platform Application Deployment I
>>>>>> Red Hat Delivery Specialist - Container Platform Administration I
>>>>>> RED HAT SPECIALIST
>>>>>> How to Sell Red Hat OpenShift for Infrastructure
>>>>>> How to Sell Red Hat OpenShift for Developers
>>>>>> Red Hat Sales Engineer Specialist - Container Platform
>>>>>> Red Hat Sales Engineer Specialist – Automation
>>>>>>
>>>>>>

Attachment Content-Type Size
ca.pem application/x-x509-ca-cert 3.7 KB

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo E. Villanueva 2025-03-11 18:07:49 Re: Autenticación TSL
Previous Message Guillermo E. Villanueva 2025-03-11 16:37:50 Re: Autenticación TSL