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>, Ayuda <pgsql-es-ayuda(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Autenticación TSL |
Date: | 2025-03-11 18:33:58 |
Message-ID: | CALnU-rNGAS2v4+4T_LbcdGPuKCdyWhOWa5Pn7w4KX+0n8+WC6Q@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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-11 18:36:08 | Re: Autenticación TSL |
Previous Message | Guillermo E. Villanueva | 2025-03-11 18:32:32 | Re: Autenticación TSL |