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.
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.
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
- Certyfikaty urzędu certyfikacji w
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.