Spuštění agenta s certifikátem podepsaným svým držitelem

Azure DevOps Server 2022 – Azure DevOps Server 2019

Toto téma vysvětluje, jak spustit agenta v místním prostředí s certifikátem podepsaným svým držitelem.

Poznámka:

Tento článek se týká verzí agenta 2.x a novějších.

Práce s certifikátem serveru SSL

Enter server URL > https://corp.tfs.com/tfs
Enter authentication type (press enter for Integrated) >
Connecting to server ...
An error occurred while sending the request.

Diagnostický protokol agenta ukazuje:

[2017-11-06 20:55:33Z ERR  AgentServer] System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred

Tato chyba může znamenat, že serverový certifikát, který jste použili na serveru TFS, není počítač sestavení důvěryhodný. Ujistěte se, že do úložiště certifikátů operačního systému nainstalujete certifikát ssl podepsaný svým držitelem.

Windows: Windows certificate store
Linux: OpenSSL certificate store
macOS: OpenSSL certificate store for agent version 2.124.0 or below
       Keychain for agent version 2.125.0 or above

Spuštěním několika příkazů můžete snadno ověřit, jestli je certifikát správně nainstalovaný. Měli byste být v pořádku, pokud ssl handshake dokončil správně, i když dostanete 401 pro požadavek.

Windows: PowerShell Invoke-WebRequest -Uri https://corp.tfs.com/tfs -UseDefaultCredentials 
Linux: curl -v https://corp.tfs.com/tfs 
macOS: curl -v https://corp.tfs.com/tfs (agent version 2.124.0 or below, curl needs to be built for OpenSSL)
       curl -v https://corp.tfs.com/tfs (agent version 2.125.0 or above, curl needs to be built for Secure Transport)

Pokud nějak nemůžete úspěšně nainstalovat certifikát do úložiště certifikátů vašeho počítače z různých důvodů, například: nemáte oprávnění nebo jste na přizpůsobeném počítači s Linuxem. Agent verze 2.125.0 nebo vyšší má možnost ignorovat chybu ověření certifikátu serveru SSL.

Důležité

To není bezpečné a nedoporučujeme, důrazně doporučujeme nainstalovat certifikát do úložiště certifikátů počítače.

Předání --sslskipcertvalidation během konfigurace agenta

./config.cmd/sh --sslskipcertvalidation

Poznámka:

Používání tohoto příznaku v Linuxu a macOS je omezené.
Knihovna libcurl na počítači s Linuxem nebo macOS musí být sestavená pomocí OpenSSL, další podrobnosti.

Selhání získání zdrojů Gitu s problémem s certifikátem SSL (jenom agent Windows)

Git příkazového řádku dodáváme jako součást agenta Windows. Tuto kopii Gitu používáme pro všechny operace související s Gitem. Pokud máte certifikát SSL podepsaný svým držitelem pro místní server TFS, nezapomeňte nakonfigurovat Git, který jsme odeslali, aby povoloval certifikát SSL podepsaný svým držitelem. Existují dva přístupy k vyřešení problému.

  1. Nastavte následující konfiguraci Gitu na globální úrovni spuštěním agenta jako uživatel.

    git config --global http."https://tfs.com/".sslCAInfo certificate.pem
    

    Poznámka:

    Nastavení konfigurace Git na úrovni systému není ve Windows spolehlivé. Systémový soubor .gitconfig se uloží s kopií Gitu, kterou jsme zabalili, což se nahradí při každém upgradu agenta na novou verzi.

  2. Povolení použití SChannel Gitu během konfigurace agenta --gituseschannel verze 2.129.0 nebo vyšší verze

    ./config.cmd --gituseschannel
    

    Poznámka:

    Git SChannel má více požadavků na omezení vašeho certifikátu podepsaného svým držitelem. Certifikát, který je generovaný službou IIS nebo příkazem PowerShellu, nemusí být schopen s nástrojem SChannel.

Práce s klientským certifikátem SSL

Služba IIS má nastavení SSL, které vyžaduje všechny příchozí požadavky na Azure DevOps Server nebo TFS, musí kromě běžných přihlašovacích údajů prezentovat klientský certifikát.

Pokud je toto nastavení PROTOKOLU SSL služby IIS povolené, musíte použít 2.125.0 nebo vyšší verzi agenta a postupovat podle těchto dodatečných kroků, abyste mohli nakonfigurovat počítač sestavení na serveru Azure DevOps nebo TFS.

  • Příprava všech požadovaných informací o certifikátu

    • Certifikáty certifikační autority ve .pem formátu (Musí obsahovat veřejný klíč a podpis certifikátu certifikační autority, musíte vložit kořenový certifikát ca a všechny certifikáty zprostředkující certifikační autority do jednoho .pem souboru).
    • Klientský certifikát ve .pem formátu (Měl by obsahovat veřejný klíč a podpis klientského certifikátu)
    • Privátní klíč klientského certifikátu ve .pem formátu (Tento klíč by měl obsahovat pouze privátní klíč klientského certifikátu)
    • Archivní balíček klientského certifikátu ve .pfx formátu (Měl by obsahovat podpis, veřejný klíč a privátní klíč klientského certifikátu).
    • Ochrana privátního klíče klientského certifikátu a balíčku archivu klientských certifikátů pomocí SAME hesla, protože oba mají privátní klíč klientského certifikátu.
  • Instalace certifikátů certifikační autority do úložiště certifikátů počítače

    • Linux: Úložiště certifikátů OpenSSL
    • macOS: Systémový nebo uživatelský klíček
    • Windows: Úložiště certifikátů Systému Windows
  • Pass --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive a --sslclientcertpassword během konfigurace agenta.

    .\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"
    

    Heslo privátního klíče klientského certifikátu je bezpečně uloženo na každé platformě.

    Linux: Encrypted with a symmetric key based on the machine ID
    macOS: macOS Keychain
    Windows: Windows Credential Store
    

Přečtěte si další informace o podpoře klientských certifikátů agenta.