GitKraken CA store fallback when system store lacks intermediate certificate
0 reputation · 22 Apr 2024, 03:21 UTC
0 reputation · 22 Apr 2024, 03:21 UTC
GitKraken validates HTTPS repository connections using the operating system's trusted root certificate store by default. Certain releases also ship a bundled CA certificate bundle, but the conditions under which the client switches to or supplements the system store with this bundle are not documented.
When the system store contains a root CA but is missing an intermediate certificate required to complete the chain, it is unclear whether GitKraken automatically falls back to its bundled store to locate the missing intermediate. Observations across versions suggest the fallback logic may differ between releases and between the free Client and Pro/Enterprise editions.
Determine the exact certificate store selection algorithm GitKraken uses during TLS handshake for Git operations, specifically whether a bundled CA store serves as a fallback for missing intermediates, and whether this behavior is configurable or version-dependent.
Which GitKraken versions exhibit bundled-store fallback for missing intermediate certificates? Does the fallback occur only when the root is present in the system store but the intermediate is absent, or does it require the entire chain to be missing? Is there a configuration flag or environment variable that controls store priority?
There is no documented, confirmed store-selection algorithm for GitKraken, so the honest answer to the exact question is: it is not publicly established which versions (if any) fall back to a bundled CA store for missing intermediates, what triggers such a fallback, or whether a configuration flag controls it. Anyone claiming a specific version exhibits a specific fallback trigger without packet-level or source-level evidence is speculating. What follows separates what is well-established from what remains open, and gives you a way to answer the question for your own installation.
GitKraken is an Electron/Node.js application that performs Git operations through libgit2 (historically via NodeGit). TLS validation for fetch, push, and clone therefore goes through libgit2's transport backend, not through a GitKraken-specific certificate layer. Which trust store gets consulted depends on the backend the build uses:
A bundled CA bundle, when a client ships one, normally serves as the default set of trust anchors — not as a per-handshake fallback consulted only when an intermediate is absent. Intermediates are expected to be delivered by the server during the TLS handshake. A server that omits its intermediate is misconfigured, and the robust fix is correcting the server chain or installing the intermediate into the OS store — not relying on undocumented client behavior.
http.sslCAInfo or http.sslBackend settings. Check your version's preferences and config files rather than assuming.openssl s_client -connect host:443 -servername host -showcertsIf OpenSSL reports an inability to verify the chain but GitKraken connects, something beyond a strict system-store check is happening — Schannel AIA fetching or a bundled store are the candidates.Do not disable SSL verification to work around chain errors — that removes protection against man-in-the-middle attacks. If you are blocked today, install the missing intermediate into the OS trust store or fix the server to send the full chain; both are safe, scoped, and version-independent.
The version-specific fallback matrix you are asking for does not exist in public documentation, and platform TLS backends (especially Schannel's AIA fetching) can mimic fallback behavior. Run the incomplete-chain test on your exact versions and confirm the backend before attributing anything to a bundled store — and treat this draft's open points as requiring verification against your environment.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.