diff --git a/Cargo.lock b/Cargo.lock index 12f68ab564..665451778e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2102,9 +2102,11 @@ dependencies = [ "mysql_async", "mysql_common", "notify", + "openssl", "pageant", "percent-encoding", "portpicker", + "postgres-openssl", "prometheus-parse", "quick-xml 0.37.5", "rayon", @@ -2129,6 +2131,7 @@ dependencies = [ "tempfile", "tiberius", "tokio", + "tokio-openssl", "tokio-postgres", "tokio-postgres-rustls", "tokio-util", @@ -6184,6 +6187,18 @@ dependencies = [ "rand 0.8.7", ] +[[package]] +name = "postgres-openssl" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06743eefaa1a5c0ef2ccb6d9abf6528790a229eabd62ddcabf9b2a3aeff09fa4" +dependencies = [ + "openssl", + "tokio", + "tokio-openssl", + "tokio-postgres", +] + [[package]] name = "postgres-protocol" version = "0.6.12" @@ -9173,6 +9188,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-openssl" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59df6849caa43bb7567f9a36f863c447d95a11d5903c9cc334ba32576a27eadd" +dependencies = [ + "openssl", + "openssl-sys", + "tokio", +] + [[package]] name = "tokio-postgres" version = "0.7.18" diff --git a/agents/drivers/duckdb/Cargo.lock b/agents/drivers/duckdb/Cargo.lock index 1efb07cbf0..2119d735f0 100644 --- a/agents/drivers/duckdb/Cargo.lock +++ b/agents/drivers/duckdb/Cargo.lock @@ -1257,9 +1257,11 @@ dependencies = [ "mongodb", "mysql_async", "notify", + "openssl", "pageant", "percent-encoding", "portpicker", + "postgres-openssl", "prometheus-parse", "quick-xml", "rayon", @@ -1763,6 +1765,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -3401,6 +3418,31 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "openssl" +version = "0.10.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "foreign-types", + "libc", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "openssl-probe" version = "0.1.6" @@ -3413,6 +3455,28 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "openssl-src" +version = "300.6.1+3.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46eb8fb9fb3b61ce1c0f8a026c4c1a0714d3a9e138e7fbde78753ce2babc3846" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + [[package]] name = "p256" version = "0.14.0-rc.7" @@ -3723,6 +3787,18 @@ dependencies = [ "rand 0.8.7", ] +[[package]] +name = "postgres-openssl" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06743eefaa1a5c0ef2ccb6d9abf6528790a229eabd62ddcabf9b2a3aeff09fa4" +dependencies = [ + "openssl", + "tokio", + "tokio-openssl", + "tokio-postgres", +] + [[package]] name = "postgres-protocol" version = "0.6.12" @@ -5538,6 +5614,17 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "tokio-openssl" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59df6849caa43bb7567f9a36f863c447d95a11d5903c9cc334ba32576a27eadd" +dependencies = [ + "openssl", + "openssl-sys", + "tokio", +] + [[package]] name = "tokio-postgres" version = "0.7.18" diff --git a/apps/desktop/src/components/connection/ConnectionDialog.vue b/apps/desktop/src/components/connection/ConnectionDialog.vue index e587111f26..90332c5210 100644 --- a/apps/desktop/src/components/connection/ConnectionDialog.vue +++ b/apps/desktop/src/components/connection/ConnectionDialog.vue @@ -60,7 +60,7 @@ import { connectionAttemptOriginalErrorMessage, connectionAttemptTimeoutMessage, import { consulAgentAddressesMatch } from "@/lib/consul/agentTarget"; import { appendConnectionErrorHints, isJdbcMissingRuntimeDependencyError } from "@/lib/connection/connectionErrorHints"; import { preventDialogDocumentSelectAll } from "@/lib/connection/dialogTextSelection"; -import { postgresTlsModeForForm } from "@/lib/connection/postgresTlsMode"; +import { postgresLegacyTlsEnabled, postgresTlsModeForForm, setPostgresLegacyTlsEnabled } from "@/lib/connection/postgresTlsMode"; import { buildMqKafkaConnectionExtra, mqKafkaConnectionTarget, resolveMqKafkaConnectionSource, type MqKafkaConnectionSource } from "@/lib/connection/mqKafkaConnection"; import { assertCompleteDatabaseCategories, databaseSelectionForCategory } from "@/lib/connection/databaseCategoryOptions"; import { loadConnectionPickerView, saveConnectionPickerView, type DbPickerView } from "@/lib/connection/connectionPickerViewPreference"; @@ -3424,6 +3424,12 @@ const postgresTlsMode = computed({ form.value.url_params = setUrlParam(form.value.url_params, "sslmode", value); }, }); +const postgresLegacyTls = computed({ + get: () => postgresLegacyTlsEnabled(form.value.url_params), + set: (value: boolean) => { + form.value.url_params = setPostgresLegacyTlsEnabled(form.value.url_params, value); + }, +}); const postgresRootCertPath = computed({ get: () => getUrlParam(form.value.url_params, "sslrootcert"), set: (value: string) => { @@ -8166,6 +8172,16 @@ function openExternalUrl(url: string) { +
+ +
+ + + {{ t("connection.postgresLegacyTlsHint") }} + +
+
+