Azure DevOps 온-프레미스용 SSL(Secure Sockets Layer)을 사용하여 HTTPS 설정
Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019
SSL(Secure Sockets Layer)과 함께 HTTPS(Hypertext Transfer Protocol Secure)를 사용하도록 구성하여 Azure DevOps Server 배포의 보안을 강화할 수 있습니다. 배포 보안을 최대화하는 이 프로토콜을 요구하거나 기본 프로토콜인 HTTP 외에 SSL을 사용하여 HTTPS를 지원하도록 선택할 수 있습니다. Visual Studio 용 Release Management 2013을 사용하는 경우 SSL에서 HTTPS를 사용하도록 구성할 수도 있지만 SSL에서 HTTP 및 HTTPS를 모두 지원하도록 구성할 수는 없습니다.
구성을 선택하기 전에 여기에 설명된 장점과 단점을 검토합니다. 조직의 보안 요구 사항을 가장 잘 충족하는 구성을 식별한 후 이 항목의 단계에 따라 배포를 구성합니다.
이 항목의 내용
개념 정보
서버 구성
선택적 구성 작업
빌드 구성
클라이언트 구성
Git 리포지토리 구성
HTTP 외에도 SSL을 사용하여 HTTPS를 지원하는 이점
두 프로토콜을 모두 지원하도록 Azure DevOps Server 배포를 구성하는 경우 SSL을 사용하여 HTTPS에 대해 컴퓨터가 구성된 사용자는 해당 프로토콜을 사용하여 연결되므로 배포가 더욱 안전해집니다. 또한 컴퓨터가 HTTP용으로만 구성된 사용자는 배포에 계속 연결할 수 있습니다. 공용 네트워크를 통해 이 구성을 배포해서는 안 되지만 제어된 네트워크 환경에서 HTTP 연결을 계속 지원하면 다음과 같은 이점을 얻을 수 있습니다.
일정에 따라 SSL을 사용하여 HTTPS용 클라이언트 컴퓨터를 구성하여 시간이 지남에 따라 배포 보안을 강화할 수 있습니다. 단계적 접근 방식을 사용하는 경우 모든 컴퓨터를 동시에 업그레이드할 필요가 없으며 컴퓨터가 아직 업그레이드되지 않은 사용자는 여전히 배포에 연결할 수 있습니다.
Azure DevOps Server를 보다 쉽게 구성하고 유지 관리할 수 있습니다.
한 웹 서비스에서 다른 웹 서비스로의 호출은 SSL을 사용하는 HTTPS보다 HTTP를 통해 더 빠릅니다. 따라서 성능 요구 사항이 보안 위험보다 큰 클라이언트 컴퓨터에서 HTTP 연결을 계속 지원할 수 있습니다.
모든 연결에 SSL을 사용하여 HTTPS를 요구하는 이점
모든 연결에 SSL이 있는 HTTPS가 필요한 경우 다음과 같은 이점을 얻을 수 있습니다.
Azure DevOps에 대한 애플리케이션 계층, 데이터 계층 및 클라이언트 계층 간의 모든 웹 연결은 인증서가 필요하기 때문에 더 안전합니다.
프로젝트 단계가 종료될 것으로 예상되는 경우 인증서가 만료되도록 구성하여 액세스를 보다 쉽게 제어할 수 있습니다.
SSL을 사용하여 HTTPS를 지원하거나 요구하는 단점
SSL을 사용하여 HTTPS를 지원하거나 요구하도록 Azure DevOps Server를 구성하기 전에 다음 단점을 고려해야 합니다.
진행 중인 관리 작업이 복잡해질 수 있습니다. 예를 들어 서비스 팩 또는 기타 업데이트를 적용하기 전에 SSL을 사용하여 HTTPS 지원을 중지하도록 배포를 다시 구성해야 할 수 있습니다.
CA(인증 기관) 및 인증서 트러스트를 구성할 뿐만 아니라 관리해야 합니다. Windows Server 2003 및 Windows Server 2008에서 인증서 서비스를 사용할 수 있지만 PKI(보안 공개 키 인프라)를 배포하는 데 필요한 시간과 리소스를 투자하지 않을 수 있습니다.
이러한 구성 중 하나를 설정하고 테스트하는 데 상당한 시간을 할애해야 하며 배포 문제 해결이 더 어려워집니다.
두 프로토콜을 계속 지원하는 경우 Azure DevOps의 애플리케이션 계층이 적절하게 보호되지 않으면 외부 연결이 암호화되지 않을 수 있습니다.
SSL을 사용하는 HTTPS가 필요한 경우 배포 성능이 느려집니다.
SSL을 사용하여 HTTPS를 지원하거나 요구하도록 배포 구성
이 항목의 절차에서는 Azure DevOps Server에서 SSL 연결에 필요한 인증서를 요청, 발급 및 할당하는 한 프로세스에 대해 설명합니다. 이 항목에서 설명하는 것과 다른 소프트웨어를 사용하는 경우 다른 단계를 수행해야 할 수 있습니다. Azure DevOps Server 배포에 대한 외부 연결을 지원하려면 IIS(인터넷 정보 서비스)에서 기본 인증, 다이제스트 인증 또는 둘 다를 사용하도록 설정해야 합니다.
이 항목의 절차에 따라 다음 작업을 수행합니다.
Azure DevOps Server 및 사용하는 웹 사이트의 배포를 위한 인증서를 가져옵니다.
인증서를 설치하고 할당합니다.
Azure DevOps Server를 구성합니다.
Team Foundation 빌드를 구성합니다.
Visual Studio 용 Release Management 2013 구성
클라이언트 컴퓨터를 구성합니다.
필수 조건
이 항목의 절차를 수행하려면 먼저 다음 요구 사항을 충족해야 합니다.
Azure DevOps Server 자체의 경우 반드시 구성되지는 않지만 Azure DevOps의 데이터 및 애플리케이션 계층에 있는 논리적 구성 요소를 설치해야 합니다. 이러한 계층에는 IIS, SQL Server 및 통합된 추가 구성 요소(예: Team Foundation Build 및 SQL Server Reporting Services)가 포함됩니다.
이 항목의 절차는 애플리케이션에서 논리 구성 요소를 실행하는 서버 또는 서버와 Azure DevOps의 데이터 계층을 참조합니다. 애플리케이션 및 데이터 계층은 Azure DevOps Server 설치 가이드에 설명된 대로 동일한 서버 또는 여러 서버에서 실행될 수 있습니다.
인증서를 발급하거나 신뢰할 수 있는 체인을 사용하여 타사 인증 기관을 구독할 수 있는 CA(인증 기관)가 있어야 합니다. 이 항목에서는 사용자가 CA로 인증서 서비스를 사용하지만 배포에 대해 구성한 CA 또는 신뢰할 수 있는 타사 인증 기관의 인증서를 사용할 수 있다고 가정합니다. 인증 기관이 없는 경우 인증서 서비스를 설치하고 구성할 수 있습니다. 자세한 내용은 Microsoft 웹 사이트의 다음 설명서 집합 중 하나를 참조하세요.
- Windows Server 2012의 경우: Active Directory 인증서 서비스
HTTPS 및 SSL에 대한 배포의 모든 구성 요소를 구성하려면 관리자여야 합니다. 다른 사용자가 개별 구성 요소에 대한 관리 권한이 있는 분산 배포에서 작업하는 경우 구성을 완료하려면 해당 사용자와 조정해야 합니다.
특히 Team Foundation Administrators 그룹에 속해야 하며, 애플리케이션 계층, 데이터 계층 및 Azure DevOps 프록시 서버 또는 Team Foundation 서버의 관리자 그룹에 속해야 합니다.
빌드 서버를 구성하려면 해당 서버의 Administrators 그룹에 속해야 합니다.
릴리스 관리를 구성하려면 릴리스 관리 서버를 호스트하는 서버의 Administrators 그룹에 속해야 하며 릴리스 관리에서 릴리스 관리자 역할의 멤버여야 합니다.
배포에서 보고를 사용하는 경우 관리 보안 그룹의 구성원이거나 보고 서비스를 구성하기 위해 개별적으로 설정된 동일한 권한이 있어야 합니다.
권한에 대한 자세한 내용은 Azure DevOps Server에 대한 권한 참조를 참조 하세요.
가정
이 항목의 절차에서는 다음 조건이 참이라고 가정합니다.
데이터 계층 및 애플리케이션 계층 서버 또는 서버는 보안 환경에 설치 및 배포되었으며 보안 모범 사례에 따라 구성되었습니다.
PKIs를 구성하고 관리하고 인증서를 요청, 발급 및 할당하는 방법을 잘 알고 있습니다.
개발 환경의 네트워크 토폴로지에 대한 실무 지식이 있으며 네트워크 설정, IIS 및 SQL Server를 구성하는 데 익숙합니다.
인증서 가져오기
SSL에서 HTTPS를 사용하도록 Azure DevOps Server를 구성하기 전에 배포에서 서버에 대한 서버 인증서를 가져와서 설치해야 합니다. 서버 인증서를 얻으려면 사용자 고유의 인증 기관을 설치하고 구성해야 합니다. 또는 신뢰할 수 있는 외부 조직의 인증 기관(타사 인증서)을 사용해야 합니다.
인증 기관을 설치하는 방법에 대한 자세한 내용은 Microsoft 웹 사이트에서 다음 항목을 참조하세요.
Windows Server 2012의 경우: AD CS 2계층 PKI 계층 구조 배포
Windows Server 2008의 경우: Active Directory 인증서 서비스 및 공개 키 관리
인증서를 사용하여 웹 사이트 요청, 설치 및 구성
인증 기관에 등록한 후에는 IIS 관리자를 사용하여 인증서를 요청하거나 배포에서 다음 각 서버에 인증서를 수동으로 설치해야 합니다.
- 각 애플리케이션 계층 서버.
- 배포에 대해 구성된 경우 Azure DevOps 프록시 서버를 실행하는 각 서버입니다.
- 배포에 대해 구성된 경우 Team Foundation Build Service를 빌드 컨트롤러 또는 빌드 에이전트로 실행하는 각 서버입니다.
- 배포에 대해 구성된 경우 Reporting Services를 실행하는 서버입니다.
또한 배포의 클라이언트 컴퓨터를 인증서 체인에 등록하고 필요한 인증서를 요청해야 합니다. 릴리스 관리를 사용하는 경우 릴리스 관리 클라이언트를 실행하는 모든 컴퓨터와 릴리스 환경에서 배포 에이전트를 실행하는 모든 clients를 포함합니다. 하나 이상의 프로젝트에서 버전 제어에 Git을 사용하는 경우 해당 프로젝트의 사용자도 클라이언트 인증서를 인식하고 사용하도록 컴퓨터에서 Git을 구성해야 합니다. 특정 CA에서 클라이언트 인증서를 요청하는 방법에 대한 자세한 내용은 해당 인증 기관에 대한 설명서를 참조하세요.
여기서는 클라이언트와 서버가 별도로 호출되지만 이는 이 문서의 규칙일 뿐입니다. 배포 에이전트를 실행하는 모든 컴퓨터에는 인증서가 설치되어 있어야 합니다.
IIS(인터넷 정보 서비스) 관리자를 엽니다.
서버를 확장하고, 서버 인증서로 이동하고, 인증서 요청을 만들고 완료합니다.
자세한 내용은 IIS에서 서버 인증서 구성을 참조 하세요.
인증서를 가져옵니다.
이제 적절한 설정을 사용하여 이 인증서가 필요한 각 웹 사이트를 구성해야 합니다(나중에 구성할 릴리스 관리 웹 사이트를 제외하고). 특히 다음 각 웹 사이트에 대해 이 작업을 수행해야 합니다.
- 기본 웹 사이트
- Azure DevOps Server
- Azure DevOps 서버 프록시(배포에서 사용하는 경우)
구성하려는 웹 사이트를 호스트하는 각 서버에서 IIS(인터넷 정보 서비스) 관리자를 엽니다.
ComputerName을 확장하고, 사이트를 확장하고, 구성하려는 웹 사이트의 하위 메뉴(예: Azure DevOps Server)를 연 다음, 작업 창에서 바인딩을 선택합니다.
사이트 바인딩에서 추가를 선택합니다.
사이트 바인딩 추가 대화 상자가 나타납니다.
형식 목록에서 https를 선택합니다.
포트에 다른 포트 번호를 입력합니다.
Important
SSL 연결의 기본 포트 번호는 443이지만 기본 웹 사이트, Azure DevOps Server 및 Azure DevOps Server 프록시(배포에서 사용하는 경우)의 각 사이트에 대해 고유한 포트 번호를 할당해야 합니다. 구성한 각 웹 사이트의 SSL 포트 번호를 기록해야 합니다. Azure DevOps에 대한 관리 콘솔에서 이러한 숫자를 지정해야 합니다.
SSL 인증서에서 가져온 인증서를 선택한 다음 확인을 선택하고 바인딩 페이지를 닫습니다.
구성 중인 웹 사이트의 홈페이지에서 기능 보기를 엽니다.
IIS에서 인증을 선택합니다.
보안 요구 사항을 가장 잘 충족하므로 구성, 해당 하위 메뉴 열기 및 메서드에 대한 추가 구성을 사용하거나 사용하지 않도록 설정하거나 수행하려는 인증 방법을 선택합니다. 예를 들어 익명 인증을 사용하지 않도록 설정하려면 익명 인증 방법을 선택하고 작업 메뉴에서 [사용 안 함]을 선택합니다.
구성이 완료되면 웹 서비스를 다시 시작합니다.
방화벽 구성
IIS에서 방금 지정한 SSL 포트를 통한 트래픽을 허용하도록 방화벽을 구성해야 합니다. 자세한 내용은 방화벽에 대한 설명서를 참조하세요.
Important
다른 컴퓨터에서 지정한 포트에서 트래픽을 테스트해야 합니다. 기본 웹 사이트 또는 웹 포털에 액세스할 수 없는 경우 IIS에서 이러한 웹 사이트에 대해 지정한 포트 설정을 다시 확인하고 해당 포트에서 트래픽을 허용하도록 방화벽이 적절하게 구성되어 있는지 확인합니다.
SQL Server Reporting Services 구성
배포에서 보고를 사용하는 경우 SSL에서 HTTPS를 지원하고 Azure DevOps Server용 IIS에서 지정한 포트를 사용하도록 SQL Server Reporting Services를 구성해야 합니다. 그렇지 않으면 보고서 서버가 배포에 대해 제대로 작동하지 않습니다. 자세한 내용은 SSL(Secure Sockets Layer) 연결에 대한 보고서 서버 구성을 참조하세요.
팁
배포에서 보고를 사용하지 않는 경우 이 절차를 건너뛸 수 있습니다.
Azure DevOps Server에 대한 HTTPS 구성
다음 단계에 따라 기본 및 Azure DevOps Server 웹 사이트에 대해 IIS에서 구성한 HTTPS 포트 및 값을 사용하여 Azure DevOps Server 배포를 구성합니다.
HTTPS를 사용하거나 요구하도록 Azure DevOps Server를 다시 구성하려면
Azure DevOps에 대한 관리 콘솔을 열고 애플리케이션 계층 노드로 이동합니다.
애플리케이션 계층 요약에서 URL 변경을 선택합니다.
URL 변경 창이 열립니다.
알림 URL에 IIS의 Azure DevOps Server 웹 사이트에 대해 구성한 HTTPS URL을 입력합니다.
예를 들어 포트 444를 사용하도록 웹 사이트를 구성했을 수 있습니다. 이 경우 https:// ServerName:444/tfs를 입력합니다. localhost 대신 서버의 정규화된 도메인 이름을 사용해야 합니다.
테스트를 선택합니다. 테스트가 통과되지 않으면 확인을 선택하지 마세요. 돌아가서 올바른 URL 및 포트 정보를 입력했는지, 모든 방화벽이 해당 포트에서 트래픽을 허용하도록 구성되었는지, 사이트를 IIS 관리자에서 사용할 수 있고 실행 중인지 확인합니다.
HTTPS를 요구하려면 서버 URL에서 사용을 선택한 다음, Azure DevOps Server 웹 사이트에 대해 구성한 HTTPS URL을 입력합니다.
localhost 대신 서버의 정규화된 도메인 이름을 사용해야 합니다.
테스트를 선택한 다음 테스트가 통과하면 확인을 선택합니다.
배포에서 Reporting Services를 사용하는 경우 관리 콘솔에서 보고를 선택합니다. 그렇지 않으면 이 절차의 나머지 부분을 건너뜁니다.
보고에서 편집을 선택합니다.
오프라인으로 전환 대화 상자가 열리면 확인을 선택합니다.
보고 창이 열립니다.
보고서 탭을 선택합니다. 보고서 서버의 URL에서 웹 서비스 및 보고서 관리자에 대한 HTTPS URL을 입력한 다음 확인을 선택합니다.
배포에 대한 액세스 테스트
변경 내용이 예상대로 작동하는지 테스트해야 합니다. 이 단계는 선택 사항이지만 강력하게 권장됩니다.
배포에 대한 액세스를 테스트하려면
애플리케이션 계층을 호스트하지 않는 컴퓨터에서 웹 브라우저를 열고 팀 홈페이지로 이동합니다.
관리 페이지를 포함하여 웹 포털에서 팀과 프로젝트에 액세스할 수 있는지 확인합니다.
웹 포털을 통해 배포에 액세스할 수 없는 경우 방금 완료한 단계를 검토하고 모든 구성을 올바르게 변경했는지 확인합니다.
SSL을 사용하여 HTTPS를 요구하도록 배포 구성(선택 사항)
SSL에서 HTTPS를 사용하려면 Azure DevOps Server 애플리케이션 계층에 대한 모든 연결을 요구할 수 있습니다. 이 추가 보안은 선택 사항이지만 권장됩니다.
SSL 연결을 요구하려면
구성하려는 웹 사이트를 호스트하는 서버에서 시작을 선택하고 관리 도구를 선택한 다음 IIS(인터넷 정보 서비스) 관리자를 선택합니다.
IIS 버전에 대한 적절한 단계를 따릅니다.
IIS 7.0을 사용하는 배포의 경우:
ComputerName을 확장하고 웹 사이트를 확장한 다음 구성하려는 웹 사이트를 선택합니다.
해당 웹 사이트의 홈페이지에서 SSL 설정을 선택합니다.
SSL 설정 창에서 SSL 필요 확인란을 선택합니다.
(선택 사항) 128비트 SSL 필요 확인란을 선택합니다.
클라이언트 인증서에서 배포의 보안 요구 사항에 따라 무시, 수락 또는 필요를 선택합니다.
작업에서 적용을 선택합니다.
SSL을 요구하려는 각 웹 사이트에 대해 이러한 단계를 반복합니다.
빌드 서버에 인증서 설치
하나 이상의 서버에 Team Foundation Build Service를 설치한 경우 각 서버의 신뢰할 수 있는 루트 인증 기관 저장소에 인증서를 설치해야 합니다. 자세한 내용은 이 항목의 앞부분에 나오는 인증서를 사용하여 인증서 가져오기 및 웹 사이트 요청, 설치 및 구성을 참조하세요. 컨트롤러와 에이전트 모두 HTTPS 연결에서 자신을 식별하는 프라이빗 키가 있는 인증서가 필요합니다.
참고 항목
SSL을 통해 빌드를 수행하려면 빌드 컨트롤러와 빌드 에이전트 모두에서 신뢰할 수 있는 루트 저장소에 인증서를 설치해야 합니다.
빌드 구성 업데이트
SSL 연결에 대한 Team Foundation Build를 구성하려면 애플리케이션 계층에 대해 구성한 HTTPS URL과 빌드 구성에서 지원하는 컬렉션을 사용하도록 빌드 서비스를 구성해야 합니다. 배포의 각 빌드 구성에 대해 이 URL을 구성해야 합니다.
HTTPS를 사용하도록 빌드 구성을 변경하려면
구성하려는 빌드 구성을 호스트하는 서버에서 Team Foundation에 대한 관리 콘솔을 엽니다.
Team Foundation에서 서버 이름을 확장한 다음 빌드 구성을 선택합니다.
빌드 구성 창이 나타납니다.
서비스 구성에서 중지를 선택한 다음 속성을 선택합니다.
빌드 서비스 속성 대화 상자가 열립니다.
Communications에서 프로젝트 컬렉션의 URL이 올바른 HTTPS 주소와 전체 서버 이름을 사용하고 있는지 확인합니다.
로컬 빌드 서비스 엔드포인트(들어오는)에서 변경을 선택합니다.
빌드 서비스 엔드포인트 대화 상자가 열립니다.
엔드포인트 세부 정보에서 포트 번호가 구성 세부 정보와 일치하는지 확인합니다.
프로토콜에서 HTTPS를 선택합니다.
SSL 인증서 목록에서 이 배포에 사용하도록 설치하고 구성한 인증서를 선택한 다음 확인을 선택합니다.
빌드 서비스 속성 대화 상자에서 시작을 선택합니다.
클라이언트 컴퓨터 구성
사용자가 Azure DevOps에 액세스하는 모든 클라이언트 컴퓨터에서 로컬로 인증서를 설치하고 해당 컴퓨터에서 Azure DevOps에 액세스한 모든 사용자의 클라이언트 캐시를 지워야 합니다. 그렇지 않으면 사용자는 해당 컴퓨터에서 Azure DevOps에 연결할 수 없습니다. 자세한 내용은 신뢰할 수 있는 루트 인증서 관리를 참조 하세요.
Important
Azure DevOps Server와 하나 이상의 Azure DevOps 클라이언트를 모두 실행하는 컴퓨터에 대해서는 이 절차를 따르지 마세요.
클라이언트 컴퓨터에 인증서를 설치하려면
해당 컴퓨터의 Administrators 그룹에 속한 계정을 사용하여 컴퓨터에 로그온합니다.
로컬 컴퓨터의 신뢰할 수 있는 루트 인증 기관 폴더에 인증서를 설치합니다.
클라이언트 컴퓨터에서 캐시를 지우려면
캐시를 지우려는 사용자의 자격 증명을 사용하여 컴퓨터에 로그온합니다.
Visual Studio의 열려 있는 인스턴스를 닫습니다.
브라우저 창에서 다음 폴더를 엽니다.
드라이브 :\Users\ UserName \AppData\Local\Microsoft\Team Foundation\4.0\Cache
캐시 디렉터리의 내용을 삭제합니다. 모든 하위 폴더를 삭제해야 합니다.
시작을 선택하고 실행을 선택하고 devenv /resetuserdata를 입력한 다음 확인을 선택합니다.
해당 컴퓨터에서 Team Foundation에 액세스한 모든 사용자의 계정에 대해 이러한 단계를 반복합니다.
참고 항목
캐시를 직접 지울 수 있도록 모든 Azure DevOps 사용자에게 캐시를 지우는 지침을 배포할 수 있습니다.
클라이언트 컴퓨터를 다시 구성된 배포에 연결하려면
Visual Studio에서 새 HTTPS URL을 사용하여 Azure DevOps Server에 연결합니다.
자세한 내용은 Azure DevOps Server의 프로젝트에 연결을 참조 하세요.
Git 구성
기본적으로 버전 제어에 Git을 사용하는 프로젝트는 Azure DevOps Server에 대해 구성한 SSL 인증서의 유효성을 검사하지 못합니다. 이는 Azure DevOps Server 및 Visual Studio와 달리 Git에서 Windows 인증서 저장소를 인식하지 못하기 때문입니다. 대신 인증서 저장소에 OpenSSL을 사용합니다. SSL로 구성된 프로젝트에 Git 리포지토리를 사용하려면 TFS 2013 배포에 대한 인증 체인의 루트에 있는 인증서로 Git을 구성해야 합니다. Git 리포지토리 프로젝트에만 적용되는 클라이언트 구성 작업입니다.
Visual Studio 2013에서 Git 네트워크 작업이 작동하는 방법에 대한 자세한 내용은 이 블로그 게시물을 참조하세요.
팁
Windows 인증 같은 다른 Git 자격 증명 관리 작업의 경우 Git용 Windows 자격 증명 저장소를 다운로드하고 설치하는 것이 좋습니다.
Git에 대한 인증서 저장소를 구성하려면
해당 컴퓨터의 Administrators 그룹에 속한 계정을 사용하여 컴퓨터에 로그온합니다.
위에 따라 필요한 인증서가 컴퓨터에 설치되고 구성되었는지 확인합니다.
지원되는 웹 브라우저에서 Azure DevOps Server 루트 인증서를 base64로 인코딩된 X.509 CER/PEM 파일로 추출합니다.
Git 루트 인증서 저장소의 프라이빗 복사본을 만들고 저장소의 개인 사용자 복사본에 추가합니다.