Skip to content

Instantly share code, notes, and snippets.

@elPytel
Created August 14, 2026 10:07
Show Gist options
  • Select an option

  • Save elPytel/40e44174c29a797fa4ee9a7d2aef28f6 to your computer and use it in GitHub Desktop.

Select an option

Save elPytel/40e44174c29a797fa4ee9a7d2aef28f6 to your computer and use it in GitHub Desktop.
Zprovoznění rozšíření pro gitlab.tul.cz ve VS Code

Jak zprovoznit GitLab Workflow ve VS Code s univerzitním certifikátem

Při pokusu o propojení oficiálního rozšíření GitLab Workflow ve VS Code s instancí GitLabu (např. univerzitní gitlab.tul.cz) často narazíte na chybu:

FetchError: request to https://gitlab.example.com/api/v4/personal_access_tokens/self failed,
reason: unable to verify the first certificate;
if the root CA is installed locally, try running Node.js with --use-system-ca

Proč k chybě dochází?

  1. Node.js certifikační store: VS Code i jeho rozšíření běží na Node.js/Electronu, který ve výchozím nastavení nepoužívá certifikační úložiště operačního systému, ale vlastní vestavěný bundle důvěryhodných kořenových autorit.
  2. Chybějící intermediate CA: Pokud server neposílá kompletní řetězec certifikátů (intermediate CA, např. GEANT / HARICA / CESNET), Node.js si jej neumí automaticky stáhnout a ověření TLS spojení selže na prvním skoku (unable to verify the first certificate).

Vypínat kontrolu certifikátů (ignoreCertificateErrors: true nebo proxyStrictSSL: false) je bezpečnostní riziko, protože tím otevíráte prostor pro MITM útoky. Správné řešení spočívá v sestavení kompletního řetězce a jeho předání Node runtime.

Řešení krok za krokem

1. Stažení leaf certifikátu ze serveru

Nejprve stáhneme koncový (leaf) certifikát konkrétního GitLab serveru:

openssl s_client -showcerts -connect gitlab.tul.cz:443 </dev/null 2>/dev/null | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.tul-leaf.crt

2. Zjištění a stažení intermediate certifikátu

Ověříme vystavitele certifikátu a URL adresu, kde se nachází chybějící intermediate autorita:

openssl x509 -in ~/.tul-leaf.crt -noout -text | grep -A 2 "Authority Info Access"

Výstup obvykle obsahuje odkaz na CA emitenta. Certifikát stáhneme a převedeme z binárního DER formátu do PEM:

curl -s http://crt.harica.gr/HARICA-GEANT-TLS-R1.cer | openssl x509 -inform DER -out ~/.intermediate-ca.crt

3. Sestavení kompletního řetězce (fullchain)

Spojíme koncový certifikát i intermediate autoritu do jednoho souboru:

cat ~/.tul-leaf.crt ~/.intermediate-ca.crt > ~/.tul-fullchain.crt

4. Spuštění VS Code s rozšířeným CA bundle

Node.js nativně podporuje proměnnou prostředí NODE_EXTRA_CA_CERTS, která přidá uvedené certifikáty k vestavěnému bundlu, aniž by vypínala TLS validaci:

NODE_EXTRA_CA_CERTS="$HOME/.tul-fullchain.crt" code

Nyní stačí ve VS Code otevřít Command Palette (Ctrl + Shift + P), spustit GitLab: Add Account to VS Code, zadat URL a Personal Access Token. Ověření projde bez chyb.

Jak nastavení zafixovat trvale

Abyste nemuseli proměnnou zadávat ručně při každém spuštění z terminálu:

Přidání do systémového/uživatelského profilu. Přidejte export do souboru ~/.profile nebo ~/.bashrc:

echo 'export NODE_EXTRA_CA_CERTS="$HOME/.tul-fullchain.crt"' >> ~/.profile
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment