Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tQW1h-003AEn-OV for pgsql-bugs@arkaria.postgresql.org; Wed, 25 Dec 2024 18:22:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tQW1f-00FF59-BG for pgsql-bugs@arkaria.postgresql.org; Wed, 25 Dec 2024 18:22:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tQW1f-00FF4U-2p for pgsql-bugs@lists.postgresql.org; Wed, 25 Dec 2024 18:22:30 +0000 Received: from smtprelay07.ispgateway.de ([134.119.228.105]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tQW1d-000XMB-0f for pgsql-bugs@lists.postgresql.org; Wed, 25 Dec 2024 18:22:29 +0000 Received: from [78.43.243.63] (helo=[192.168.178.53]) by smtprelay07.ispgateway.de with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98) (envelope-from ) id 1tQW1j-000000003Po-3pyH; Wed, 25 Dec 2024 19:22:35 +0100 Message-ID: <8a8cba41-fa82-492b-8500-a7538e5d5cf7@headcrashing.eu> Date: Wed, 25 Dec 2024 19:22:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: psql v16.3 successfully connects via TLSv1.3 proxy, but psql v16.4 says "tlsv1 alert no application protocol" To: Heikki Linnakangas , pgsql-bugs@lists.postgresql.org References: <68ff85d7-9b41-40ec-bddf-0ca74fe09875@headcrashing.eu> <2bfb5b13-63d7-4bce-96b4-8e075fe7d97a@iki.fi> From: Markus KARG In-Reply-To: <2bfb5b13-63d7-4bce-96b4-8e075fe7d97a@iki.fi> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Df-Sender: bWFya3VzQGhlYWRjcmFzaGluZy5ldQ== List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk > On 25/12/2024 19:05, Markus KARG wrote: >> I am running the official PostgreSQL 17.2 Docker Container (https:// >> hub.docker.com/layers/library/postgres/17.2/images/sha256- >> c063081175f45f4a3a5ac03c234e060e67618ebe75b49e2a7ffb79f8357bd1e6) >> proxied by a TLSv1.3 proxy (official Traefik 3.2.3 Docker Container >> https://hub.docker.com/layers/library/traefik/v3.2.3/images/ >> sha256-06966a9ba1747ad724a490b8f27df1434c64e8eee5d681df03c4761c9653f62c). >> Traefik utilizes ACME with Let's Encrypt to produce the TLS certificate. > > In v17, libpq requests the ALPN extension in the TLS handshake. Looks > like the proxy doesn't know about the "postgresql" ALPN protocol, and > rejects the connection. > > I guess Traefik needs some configuration changes to tell it that the > "postgresql" protocol is expected. Or code changes. Traefik does NOT REJECT the connection (if it would, the error message from psql would be different). Traefik is "postgres-aware" already since 3.0.0, while I am running 3.2.3. Note that psql v16.3 works fine but psql v16.4 is not, so a change introduced by v17 this CANNOT be the cause of the current problem. >> Using the official PostgresSQL Docker Container (16.3 vs 16.4+), I am >> asking psql to connect to my server. While psql 16.3 and earlier >> versions successfully connect via the TLS proxy to the PostgreSQL >> server, psql 16.4 and later versions fail doing so: >> >> root@hetzner-2:~# docker run -it postgres:16.3 psql >> "host=headcrashing.eu port=5432 dbname=postgres user=postgres >> password=... sslmode=require" >> psql (16.3 (Debian 16.3-1.pgdg120+1), server 17.2 (Debian >> 17.2-1.pgdg120+1)) >> WARNING: psql major version 16, server major version 17. >>           Some psql features might not work. >> SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, >> compression: off) >> Type"help" for help. >> >> postgres=# \q >> root@hetzner-2:~# docker run -it postgres:16.4 psql >> "host=headcrashing.eu port=5432 dbname=postgres user=postgres >> password=... sslmode=require" >> psql: error: connection to server at"headcrashing.eu" (49.13.53.107), >> port 5432 failed: SSL error: tlsv1 alert no application protocol > > There were no changes between 16.3 and 16.4 to explain this. When I > test that with v16 client that I built from sources, I don't get that > error. > > The error message suggests that you're actually using libpq v17. And > indeed I get that error when connecting with v17 client. Perhaps the > postgres:16.4 docker image was built with v17 libpq? I am using the original, pre-built container images found on Docker Hub and have NOT built them on my own. I am not a PostgresSQL committer either. So I cannot answer your question.