Repository navigation
fix(duckdb): trust a private CA, pin certificates and tunnel remote Quack connections - #4021
Merged
Merged
Conversation
…uack connections Remote DuckDB never used the SSL settings the Network tab showed, and DuckDB checks certificates against /etc/ssl/cert.pem, not the macOS keychain, so a server with a private or self-signed certificate could not be reached. - Remote mode has its own SSL Mode: Automatic, Disabled, Required, Verify Identity with an optional CA file, and Verify Fingerprint. - Tunnels forward to the server fields a type declares, and a stored tunnel opens only where the driver dials it. - The Remote session ignores persistent DuckDB secrets, requires the Token, and drops its token secret right after ATTACH. - An older driver is refused a setting or a tunnel it cannot secure. - quack:// URLs carry sslmode and ssl_fingerprint; +ssh paths are encoded and IPv6 hosts bracketed. - Curated and plugin capabilities are checked for parity in Repo Hygiene, fixing the foreign key checkbox and container names it found.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
quack_servegenerates works through its fingerprint. Verify Identity adds the CA to the system bundle, so public HTTPS reads keep working.ServerEndpointFields), and opens a stored tunnel only where the driver dials it. Modes that check the host name are refused through a tunnel before dialing.~/.duckdbcan no longer replace the token or the trust the form chose, and a later ATTACH to another host cannot pick the token up.quack://URLs carrysslmodeandssl_fingerprint, andssl=truemeans Verify Identity. Every+sshURL now encodes its database path, and IPv6 hosts are bracketed on copy and unbracketed on import.apple/scripts/ci/check-capability-parity.pykeeps those flags in step between the curated table and each plugin; it replacesHealthMonitorOptOutParityTests, a test that read source.Test plan
TableProDuckDBCoreTests(new, 48): every SSL Mode direct and through a tunnel, refusals, the secret's lifetime, the combined CA bundle, error mapping, extension loading.TableProTests: the tunnel, transport, URL, field trust, form and refusal suites (507 and 367 cases), including newDriverSettingNotSupportedErrorTests. The deletedHealthMonitorOptOutParityTestsis covered by the parity check and its fixtures (test_check_capability_parity.py).apple/scripts/probes/check-quack-tls.shagainst DuckDB v2.0.0 (quack f96420ed, httpfs 77392a7): every case passes, direct and through a loopback forward, with stored secrets and a control.Docs: TableProApp/docs#174, merges after this one.
Reported by email; no issue.