Udostępnij za pośrednictwem


Uruchom agenta z certyfikatem samopodpisanym

Azure DevOps Server 2022 — Azure DevOps Server 2019

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

Uwaga

Ten artykuł dotyczy wersji agenta 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ń. Wszystko powinno być w porządku, o ile uzgadnianie SSL zakończyło się poprawnie, nawet jeśli otrzymasz kod 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 z jakiegoś powodu nie możesz pomyślnie zainstalować certyfikatu w magazynie certyfikatów maszyny z różnych powodów, takich jak: nie masz uprawnień lub używasz dostosowanej wersji systemu 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.

Przeprowadź --sslskipcertvalidation podczas konfiguracji 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 wersję wiersza poleceń Git 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 Git dostarczony z systemem jest skonfigurowany do obsługi tego certyfikatu SSL. Istnieje 2 podejścia do rozwiązania problemu.

  1. Ustaw następującą konfigurację git na poziomie globalnym jako użytkownik.

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

    Uwaga

    Ustawienie konfiguracji Git na poziomie systemu 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 Git, aby używać SChannel podczas konfigurowania z agentem w wersji 2.129.0 lub wyższej. Przekaż --gituseschannel podczas konfigurowania agenta.

    ./config.cmd --gituseschannel
    

    Uwaga

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

Praca z certyfikatem klienta SSL

Usługi IIS mają ustawienie SSL, które wymaga, aby wszystkie żądania przychodzące do Azure DevOps Server lub TFS musiały przedstawić certyfikat klienta oprócz zwykłych poświadczeń.

Po włączeniu tego ustawienia SSL w usługach IIS, należy użyć agenta w wersji 2.125.0 lub nowszej i wykonać te dodatkowe kroki, aby skonfigurować maszynę kompilacji w odniesieniu do serwera Azure DevOps lub TFS.

  • Przygotowywanie wszystkich wymaganych informacji o certyfikacie

    • Certyfikaty urzędu certyfikacji w formacie .pem (powinien 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 w jednym pliku .pem)
    • Certyfikat klienta w formacie .pem (powinien zawierać klucz publiczny i podpis certyfikatu klienta)
    • Klucz prywatny certyfikatu klienta w formacie .pem (powinien zawierać tylko klucz prywatny certyfikatu klienta)
    • Pakiet archiwum certyfikatów klienta w formacie .pfx (powinien zawierać podpis, klucz publiczny i klucz prywatny certyfikatu klienta)
    • Użyj hasła SAME, aby chronić klucz prywatny certyfikatu klienta i pakiet archiwum certyfikatu klienta, ponieważ oba mają klucz prywatny certyfikatu klienta
  • Zainstaluj certyfikaty 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
  • Przekaż --sslcacert, --sslclientcert, --sslclientcertkey. --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 certyfikatu klienta agenta .