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