자체 서명된 인증서를 사용하여 에이전트 실행

Azure DevOps Server 2022 - Azure DevOps Server 2019

이 항목에서는 자체 서명된 인증서를 사용하여 자체 호스팅 에이전트를 실행하는 방법을 설명합니다.

참고 항목

이 문서는 에이전트 버전 2.x 이상에 적용됩니다.

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.

에이전트 진단 로그는 다음을 보여줍니다.

[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

이 오류는 TFS 서버에서 사용한 서버 인증서가 빌드 컴퓨터에서 신뢰할 수 없음을 나타낼 수 있습니다. 자체 서명된 ssl 서버 인증서를 OS 인증서 저장소에 설치해야 합니다.

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

몇 가지 명령을 실행하여 인증서가 올바르게 설치되었는지 여부를 쉽게 확인할 수 있습니다. 요청에 대해 401을 받더라도 SSL 핸드셰이크가 올바르게 완료되는 한 좋을 것입니다.

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)

권한이 없거나 사용자 지정된 Linux 컴퓨터에 있는 등 다양한 이유로 인해 컴퓨터의 인증서 저장소에 인증서를 성공적으로 설치할 수 없는 경우 에이전트 버전 2.125.0 이상에는 SSL 서버 인증서 유효성 검사 오류를 무시하는 기능이 있습니다.

Important

이는 안전하지 않으며 권장되지 않습니다. 인증서를 머신 인증서 저장소에 설치하는 것이 좋습니다.

에이전트 구성 중 전달 --sslskipcertvalidation

./config.cmd/sh --sslskipcertvalidation

참고 항목

Linux 및 macOS에서 이 플래그를 사용하는 제한 사항이 있습니다.
Linux 또는 macOS 컴퓨터의 libcurl 라이브러리는 OpenSSL을 사용하여 빌드해야 합니다. 자세한 정보

SSL 인증서 문제로 Git 원본 가져오기 실패(Windows 에이전트에만 해당)

Windows 에이전트의 일부로 명령줄 Git을 배송합니다. 이 Git 복사본은 모든 Git 관련 작업에 사용합니다. 온-프레미스 TFS 서버에 대한 자체 서명된 SSL 인증서가 있는 경우 자체 서명된 SSL 인증서를 허용하도록 제공된 Git을 구성해야 합니다. 이 문제를 해결하는 방법에는 2가지가 있습니다.

  1. 에이전트가 사용자로 실행하여 전역 수준에서 다음 git 구성을 설정합니다.

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

    참고 항목

    시스템 수준 Git 구성을 설정하는 것은 Windows에서 신뢰할 수 없습니다. 시스템 .gitconfig 파일은 패키지된 Git의 복사본과 함께 저장되며 에이전트가 새 버전으로 업그레이드될 때마다 대체됩니다.

  2. 에이전트 구성 중에 2.129.0 이상 버전 에이전트 Pass --gituseschannel 로 구성하는 동안 git을 사용하도록 SChannel 설정합니다.

    ./config.cmd --gituseschannel
    

    참고 항목

    Git SChannel에는 자체 서명된 인증서에 대한 제한 요구 사항이 더 많이 있습니다. IIS 또는 PowerShell 명령에서 생성된 자체 Singed 인증서는 SChannel에서 수행할 수 없습니다.

SSL 클라이언트 인증서 작업

IIS에는 Azure DevOps Server 또는 TFS에 들어오는 모든 요청이 일반 자격 증명 외에 클라이언트 인증서를 제공해야 하는 SSL 설정이 있습니다.

IIS SSL 설정을 사용하도록 설정한 경우 Azure DevOps 또는 TFS 서버에 대해 빌드 머신을 구성하려면 버전 에이전트 이상을 사용하고 2.125.0 다음 추가 단계를 수행해야 합니다.

  • 필요한 모든 인증서 정보 준비

    • CA 인증서 형식(CA 인증서의 .pem 공개 키와 서명을 포함해야 하며, 루트 ca 인증서와 모든 중간 ca 인증서를 하나의 .pem 파일에 넣어야 합니다.)
    • 형식의 .pem 클라이언트 인증서(클라이언트 인증서의 공개 키 및 서명을 포함해야 합니다.)
    • 형식의 .pem 클라이언트 인증서 프라이빗 키(클라이언트 인증서의 프라이빗 키만 포함해야 합니다).
    • 클라이언트 인증서 보관 패키지 .pfx 형식(클라이언트 인증서의 서명, 공개 키 및 프라이빗 키가 포함되어야 합니다.)
    • 둘 다 클라이언트 인증서의 프라이빗 키를 가지고 있으므로 암호를 사용하여 SAME 클라이언트 인증서 프라이빗 키 및 클라이언트 인증서 보관 패키지를 보호합니다.
  • 머신 인증서 저장소에 CA 인증서 설치

    • Linux: OpenSSL 인증서 저장소
    • macOS: 시스템 또는 사용자 키 집합
    • Windows: Windows 인증서 저장소
  • Pass --sslcacert, --sslclientcert. --sslclientcertkey --sslclientcertarchive--sslclientcertpassword 에이전트 구성 중

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

    클라이언트 인증서 프라이빗 키 암호는 각 플랫폼에 안전하게 저장됩니다.

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

에이전트 클라이언트 인증서 지원에 대해 자세히 알아봅니다.