- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2025 04:36 AM
Hi everyone,
I’m trying to properly configure Databricks Serverless Private Git to connect to our on-premises GitLab, but I'm running into issues with private CA certificates.
Following the latest Databricks recommendations, our connection to GitLab goes through:
- a load balancer
- a private proxy server
- an on-prem GitLab instance
- no public internet access (Databricks traffic cannot go out to the public Internet)
Because of this setup, we’re using Databricks Serverless Private Git.
What works
The connection to GitLab works correctly as long as SSL verification is disabled, for example:
{
"default": {
"sslVerify": false
}
}
With SSL verification turned off, Databricks can successfully clone the repository and run all Git operations.
What does NOT work
The issue appears when we want to enable proper SSL verification and use our internal CA certificate, since our organization does not use publicly-signed certificates — everything is signed by our internal PKI.
According to Databricks documentation:
- we created the .git_settings folder in the workspace
- we placed our CA certificate inside (e.g. ca.pem)
- we added config.json to point Git to that CA file
Our configuration looks like this:
{
"default": {
"caCertPath": "/Workspace/.git_settings/cert.pem",
"httpProxy": "https://gitlab.apps.correcturl/"
},
"remotes": [
{
"caCertPath": "/Workspace/.git_settings/cert.pem",
"urlPrefix": "https://gitlab.apps.correcturl/"
}
]
}
After enabling this, the connection stops working. Git on Databricks fails to validate the certificate even though the CA is valid and works with other tools (curl/git from local machines, CI pipelines, etc.).
Symptoms
- the connection fails with an SSL certificate verification error
- it inside Databricks does not seem to see or load the custom CA certificate
- disabling sslVerify makes everything work, but this is not acceptable from a security standpoint
Error creating Git folder
remote: git proxy error, HTTPSConnectionPool(host='gitlab.apps.correcturl', port=443): Max retries exceeded with url: /path-in-git/notebooks.git/info/refs?service=git-upload-pack (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get issuer certificate (_ssl.c:1007)')))
Request ID: 7faa538c-946e-416c-90ee-b41c5891ff85. Show error details
Question
Has anyone successfully implemented a similar setup:
- Databricks → Serverless Private Git
- On-prem GitLab (no public access)
- Internal/private CA (enterprise PKI)
and managed to make Git use a custom CA certificate correctly?
Any ideas or guidance would be very appreciated.
Thanks!
- Labels:
-
Partner
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2025 01:55 PM
Hello @kfadratek , thanks for the detailed context — Let's take a look at what could be causing the SSL verification to fail with a custome CA in Serverless Private Git and discuss some approaches that might resolve it.
What’s likely going wrong
-
The CA file or config.json isn’t readable to the serverless service (workspace ACLs not granting View) or the path is wrong. Serverless Private Git reads config from
/Workspace/.git_settings/config.json, and you must grant all Git users View to that file and any referenced CA files. Changes can take up to 1 minute to apply. -
The httpProxy value is mis-specified. In Serverless Private Git,
httpProxyis the HTTPS URL of the proxy to route Git traffic through. It should point to your proxy (host:port), not to the Git server URL itself. The field is optional — leave it empty if you don’t need a proxy beyond your PrivateLink/NLB/SLB path. -
The certificate presented by the load balancer/proxy doesn’t match the URL you’re using (CN/SAN mismatch) or is re-terminating TLS with a different issuer than you bundled.
-
You’re expecting logs from serverless, but logs aren’t currently available, so misconfigurations manifest only as connection errors. Troubleshooting must rely on config correctness and network validation.
Quick checks to run
- Confirm the file paths exist exactly as referenced: *
/Workspace/.git_settings/config.json*/Workspace/.git_settings/cert.pem(or your chosen name) -
Set workspace permissions:
- Grant View to all Git users for both the config file and CA file.
-
Verify the CA bundle content:
- Concatenate the full chain that issued the certificate your serverless compute sees (root + all intermediates) into a single PEM file. Ensure the first cert in the file is the issuing CA for the server/proxy cert, and that the file contains only CA certs (not the server cert).
- Test the bundle outside Databricks (curl with
--cacert) against the exact hostname used by Serverless, then use that same bundle inside Databricks.
-
Validate hostname and chain:
- Browse to
https://gitlab.apps.correcturl/from a machine that trusts only your enterprise CAs using your CA bundle; check the chain and SANs. If your LB/proxy offloads TLS, verify it presents the cert forgitlab.apps.correcturland that the issuer matches the CA bundle.
- Browse to
-
Review your httpProxy configuration:
- If you truly route Databricks traffic via an internal proxy, set
httpProxyto that proxy’s full HTTPS URL (for example,https://proxy.internal.company.com:8443). Otherwise remove it; it’s optional.
- If you truly route Databricks traffic via an internal proxy, set
-
Confirm NCC/private endpoint rules include the Git server FQDN (and any proxy FQDN if used) so Serverless can reach it through PrivateLink. Wait a few minutes after rules are created, then try a Git operation from the workspace.
Known requirements and structure to follow
- Create
/Workspace/.git_settings/config.jsonand keep the default section present (even partial). UsecaCertPathto reference the custom CA and, if needed,httpProxyto route traffic. Remote-specific overrides go underremotesand must includeurlPrefix. -
Example minimal config (with proper proxy and CA bundle):
json { "default": { "sslVerify": true, "caCertPath": "/Workspace/.git_settings/ca-bundle.pem", "httpProxy": "https://proxy.internal.company.com:8443" }, "remotes": [ { "urlPrefix": "https://gitlab.apps.correcturl/", "caCertPath": "/Workspace/.git_settings/ca-bundle.pem" } ] } -
After saving, wait up to 1 minute for changes to take effect and then perform a Git operation (e.g., clone) to validate.
If you need deeper triage
GIT_PROXY_CA_CERT_PATH=/FileStore/myCA-bundle.pem on the proxy cluster. * Use the same bundle you intend to use for Serverless Private Git and validate clone/pull. If the classic proxy succeeds with your bundle but serverless fails, focus on workspace file access/permissions and the httpProxy semantics in the serverless config.Summary of targeted fixes
- Use a single CA bundle PEM with the full chain that issued the cert your LB/proxy presents.
-
Ensure workspace ACLs grant View to
/Workspace/.git_settings/config.jsonand the CA file; confirm the paths are correct. -
Set httpProxy to your actual proxy (host:port) if used; otherwise remove it.
-
Confirm NCC/private endpoint rules include the FQDNs you’re accessing and allow the path through PrivateLink.
-
Allow 1 minute for config changes to apply, then re-test clone/pull.