From: | "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com> |
---|---|
To: | Jairo Graterón <jgrateron(at)gmail(dot)com> |
Cc: | Juan <smalltalker(dot)marcelo(at)gmail(dot)com>, Enrique Herrera Noya <enrique(dot)herreranoya(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Autenticación TSL |
Date: | 2025-03-11 18:36:08 |
Message-ID: | CANm+PCB5_EavsJOvygokfBhBnPMKip9GXcbLAFxS+MujOFz7uQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Muchas gracias Jairo, llevo días intentando hacerlo andar, nunca iba a
poder 🤦
El mar, 11 mar 2025 a las 15:34, Jairo Graterón (<jgrateron(at)gmail(dot)com>)
escribió:
> Si correcto.
>
> El mar, 11 de mar de 2025, 2:32 p. m., Guillermo E. Villanueva <
> guillermovil(at)gmail(dot)com> escribió:
>
>> osea que tendría que configurar en el pg_hba protocolo "hostssl" y
>> autenticación "md5" y del lado del cliente dejo verify-ca?
>>
>> El mar, 11 mar 2025 a las 15:25, Jairo Graterón (<jgrateron(at)gmail(dot)com>)
>> escribió:
>>
>>> No, con Lets Encrypt no puedes autenticar con certificado, solo
>>> comprobar que el servidor es quien dice ser y prevenir el ataque main in
>>> the middle.
>>>
>>> Y no funciona porque el CN del certificado debe ser un usuario de
>>> postgresql y lets encrypt solo entrega certificados de dominios.
>>>
>>> Tendrías que crear tu propia PKI usando ejbca, xca o keystore Explorer.
>>>
>>>
>>> El mar, 11 de mar de 2025, 2:08 p. m., Guillermo E. Villanueva <
>>> guillermovil(at)gmail(dot)com> escribió:
>>>
>>>> Que bien Jairo!!! yo no logro hacerlo funcionar, pero no se si es
>>>> porque lo que pretendo yo es hacer la autenticación solo por certificados,
>>>> Del lado de Postgres en el pg_hba tengo protocolo "hostssl" y
>>>> autenticación "cert" y del lado del cliente tengo verify-full aunque sería
>>>> aceptable verify-ca.
>>>>
>>>> Vos qué tenés en el pg_hba para el ejemplo que probaste?
>>>>
>>>> El mar, 11 mar 2025 a las 14:31, Jairo Graterón (<jgrateron(at)gmail(dot)com>)
>>>> escribió:
>>>>
>>>>> 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
>>>>>>>>>>>
>>>>>>>>>>>
From | Date | Subject | |
---|---|---|---|
Next Message | Guillermo E. Villanueva | 2025-03-12 15:27:28 | Re: Autenticación TSL |
Previous Message | Jairo Graterón | 2025-03-11 18:33:58 | Re: Autenticación TSL |