-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sync service 12.0.1 fails to connect to the database with {:case_clause, :undefined} error #1395
Comments
This is caused by an issue in Erlang. It was introduced in OTP 26.2. Electric's sync service had been using OTP 25.x up until version 0.12.1 in which we upgrade to OTP 27.0. |
alco
added a commit
that referenced
this issue
Jun 21, 2024
alco
added a commit
that referenced
this issue
Jun 21, 2024
Since OTP 26, the default for SSL connections has changed from verify_none to verify_peer. We cannot use the latter because in practice some popular hosts appear to have certificate chain problems. Not that connecting with psql using sslmode=require is equivalent to using verify_none with Erlang SSL. Fix #1395.
alco
added a commit
that referenced
this issue
Jun 24, 2024
When we upgraded the sync service to OTP 27.0, we missed the changed default from `verify_none` to `verify_peer` in SSL connections. We now explicitly set `verify` to `verify_none` because it's currently the only way to ensure encrypted connections work even when a faulty certificate chain is presented by the PG host. This behaviour matches that of `psql <DATABASE_URL>?sslmode=require`. Here's an example of connecting to DigitalOcean's Managed PostgreSQL to illustrate the point: ``` $ psql 'postgresql://...?sslmode=require' Null display is "∅". Output format is aligned. Expanded display is used automatically. Line style is unicode. Border style is 1. psql (16.1, server 16.3) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) Type "help" for help. [db-postgresql-do-user-13160360-0] doadmin:defaultdb=> \q ``` ``` $ psql 'postgresql://...?sslmode=verify-full' psql: error: connection to server at "***.db.ondigitalocean.com" (167.99.250.38), port 25060 failed: root certificate file "/home/alco/.postgresql/root.crt" does not exist Either provide the file, use the system's trusted roots with sslrootcert=system, or change sslmode to disable server certificate verification. $ psql 'sslrootcert=system sslmode=verify-full host=***.db.ondigitalocean.com ...' psql: error: connection to server at "***.db.ondigitalocean.com" (167.99.250.38), port 25060 failed: SSL error: certificate verify failed ``` ``` $ openssl s_client -starttls postgres -showcerts -connect ***.db.ondigitalocean.com:25060 -CApath /etc/ssl/certs/ [...] SSL handshake has read 3990 bytes and written 885 bytes Verification error: self-signed certificate in certificate chain ``` Fix #1395.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Full server log when trying to run
electricsql/electric:0.12.1
on DO with DO's managed Postgres:The text was updated successfully, but these errors were encountered: