Uruchamianie agenta z certyfikatem z podpisem własnym

Azure DevOps Server 2022 — Azure DevOps Server 2019

W tym temacie wyjaśniono, jak uruchomić własnego agenta z certyfikatem z podpisem własnym.

Uwaga

Ten artykuł dotyczy agentów w wersji 2.x i nowszych.

Praca z certyfikatem serwera 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.

Dziennik diagnostyczny agenta pokazuje:

[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

Ten błąd może wskazywać, że certyfikat serwera używany na serwerze TFS nie jest zaufany przez maszynę kompilacji. Upewnij się, że certyfikat serwera ssl z podpisem własnym został zainstalowany w magazynie certyfikatów systemu operacyjnego.

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

Możesz łatwo sprawdzić, czy certyfikat został poprawnie zainstalowany, uruchamiając kilka poleceń. Powinno być dobre, o ile uzgadnianie SSL zakończyło się poprawnie, nawet otrzymasz 401 dla żądania.

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)

Jeśli w jakiś sposób nie możesz pomyślnie zainstalować certyfikatu w magazynie certyfikatów maszyny z różnych powodów, takich jak: nie masz uprawnień lub jesteś na dostosowanej maszynie z systemem Linux. Agent w wersji 2.125.0 lub nowszej ma możliwość ignorowania błędu weryfikacji certyfikatu serwera SSL.

Ważne

Nie jest to bezpieczne i nie jest zalecane. Zdecydowanie zalecamy zainstalowanie certyfikatu w magazynie certyfikatów komputera.

Przekazywanie --sslskipcertvalidation podczas konfigurowania agenta

./config.cmd/sh --sslskipcertvalidation

Uwaga

Istnieje ograniczenie dotyczące używania tej flagi w systemach Linux i macOS
Biblioteka libcurl na komputerze z systemem Linux lub macOS musi być skompilowana przy użyciu biblioteki OpenSSL, więcej szczegółów

Pobieranie źródeł usługi Git kończy się niepowodzeniem z powodu problemu z certyfikatem SSL (tylko agent systemu Windows)

Dostarczamy narzędzie Git wiersza polecenia jako część agenta systemu Windows. Używamy tej kopii narzędzia Git dla wszystkich operacji związanych z usługą Git. Jeśli masz certyfikat SSL z podpisem własnym dla lokalnego serwera TFS, upewnij się, że usługa Git została wysłana, aby zezwolić na używanie tego certyfikatu SSL z podpisem własnym. Istnieje 2 podejścia do rozwiązania problemu.

  1. Ustaw następującą konfigurację usługi Git na poziomie globalnym przez użytkownika uruchom jako użytkownika agenta.

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

    Uwaga

    Ustawienie konfiguracji systemu Git nie jest niezawodne w systemie Windows. Systemowy plik .gitconfig jest przechowywany wraz z kopią spakowanego narzędzia Git, która zostanie zamieniona za każdym razem, gdy agent zostanie uaktualniony do nowej wersji.

  2. Włącz usługę Git do użycia SChannel podczas konfigurowania z agentem w wersji 2.129.0 lub nowszej — dostęp próbny --gituseschannel podczas konfigurowania agenta

    ./config.cmd --gituseschannel
    

    Uwaga

    Usługa Git SChannel ma więcej ograniczeń dla certyfikatu z podpisem własnym. Certyfikat samoobsługowy wygenerowany przez usługi IIS lub polecenie programu PowerShell może nie być w stanie korzystać z protokołu SChannel.

Praca z certyfikatem klienta SSL

Usługi IIS mają ustawienie SSL, które wymaga wszystkich żądań przychodzących do serwera Azure DevOps Server lub serwera TFS, musi przedstawić certyfikat klienta oprócz zwykłych poświadczeń.

Po włączeniu tego ustawienia protokołu SSL usług IIS należy użyć 2.125.0 lub nowszego agenta wersji i wykonać te dodatkowe kroki, aby skonfigurować maszynę kompilacji na serwerze Usługi Azure DevOps lub TFS.

  • Przygotowywanie wszystkich wymaganych informacji o certyfikacie

    • Certyfikaty urzędu certyfikacji w .pem formacie (powinno to zawierać klucz publiczny i podpis certyfikatu urzędu certyfikacji, należy umieścić certyfikat głównego urzędu certyfikacji i wszystkie certyfikaty pośredniego urzędu certyfikacji do jednego .pem pliku)
    • Certyfikat klienta w .pem formacie (powinien zawierać klucz publiczny i podpis certyfikatu klienta)
    • Klucz prywatny certyfikatu klienta w .pem formacie (powinien zawierać tylko klucz prywatny certyfikatu klienta)
    • Pakiet archiwum certyfikatów klienta w .pfx formacie (powinien zawierać podpis, klucz publiczny i klucz prywatny certyfikatu klienta)
    • Użyj SAME hasła, aby chronić klucz prywatny certyfikatu klienta i pakiet archiwum certyfikatu klienta, ponieważ oba certyfikaty klienta mają klucz prywatny
  • Instalowanie certyfikatów urzędu certyfikacji w magazynie certyfikatów komputera

    • Linux: magazyn certyfikatów OpenSSL
    • macOS: łańcucha kluczy systemu lub użytkownika
    • Windows: magazyn certyfikatów systemu Windows
  • Przekazywanie --sslcacert, , --sslclientcertkey--sslclientcert. --sslclientcertarchive i --sslclientcertpassword podczas konfiguracji agenta.

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

    Hasło klucza prywatnego certyfikatu klienta jest bezpiecznie przechowywane na każdej platformie.

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

Dowiedz się więcej o obsłudze certyfikatów klienta agenta.