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:32:32 |
Message-ID: | CANm+PCA6=aD0RQ+bjV-21=3EwkBTDrMZKiMoEaRzhAq95uK1HQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 | Jairo Graterón | 2025-03-11 18:33:58 | Re: Autenticación TSL |
Previous Message | Jairo Graterón | 2025-03-11 18:24:45 | Re: Autenticación TSL |