신뢰할 수 있는 서명을 사용하도록 서명 통합 설정
Trusted Signing은 현재 다음 서명 통합을 지원합니다.
- SignTool
- GitHub Actions
- Azure DevOps 작업
- 인증 코드용 PowerShell
- Azure PowerShell(비즈니스 CI 정책용 앱 제어)
- 신뢰할 수 있는 서명 SDK
Microsoft는 더 많은 서명 통합을 지원하기 위해 지속적으로 노력하고 있습니다. 더 많은 통합이 제공되면 지원되는 통합 목록이 업데이트됩니다.
이 문서에서는 지원되는 신뢰할 수 있는 서명의 각 서명 통합을 설정하는 방법을 설명합니다.
신뢰할 수 있는 서명을 사용하도록 SignTool 설정
이 섹션에서는 Trusted Signing과 함께 사용할 SignTool을 설정하는 방법을 설명합니다.
필수 조건
이 문서의 단계를 완료하려면 다음이 필요합니다.
- 신뢰할 수 있는 서명 계정, ID 유효성 검사, 인증서 프로필
- 신뢰할 수 있는 서명 인증서 프로필 서명자 역할의 개별 또는 그룹 할당
단계 요약
- SignTool을 다운로드하고 설치합니다.
- .NET 8 런타임을 다운로드하고 설치합니다.
- 신뢰할 수 있는 서명 dlib 패키지를 다운로드하고 설치합니다.
- 신뢰할 수 있는 서명 계정과 인증서 프로필을 제공하는 JSON 파일을 만듭니다.
- 파일에 서명하려면 SignTool을 호출합니다.
SignTool 다운로드 및 설치
신뢰할 수 있는 서명을 사용하려면 SignTool을 사용하여 Windows의 파일, 특히 Windows 10 SDK 10.0.2261.755 이상에 있는 SignTool.exe 버전에 서명해야 합니다. Visual Studio 설치 관리자를 통해 전체 Windows 10 SDK를 설치하거나 별도로 다운로드하여 설치할 수 있습니다.
SignTool을 다운로드하고 설치하려면:
Microsoft.Windows.SDK.BuildTools에서 SignTool 및 Windows 빌드 도구 NuGet의 최신 버전을 다운로드합니다.
Windows SDK에서 SignTool을 설치합니다(최소 버전: 10.0.2261.755, 20348 Windows SDK 버전은 dlib에서 지원되지 않음).
또 다른 옵션은 PowerShell을 통해 최신 nuget.exe 파일을 사용하여 최신 Windows SDK 빌드 도구 NuGet 패키지를 다운로드하고 추출하는 것입니다.
다음 다운로드 명령을 실행하여 nuget.exe를 다운로드합니다.
Invoke-WebRequest -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile .\nuget.exe
다음 설치 명령을 실행하여 Windows SDK 빌드 도구 NuGet 패키지를 다운로드하고 추출합니다.
.\nuget.exe install Microsoft.Windows.SDK.BuildTools -Version 10.0.22621.3233 -x
.NET 8.0 런타임 다운로드 및 설치
SignTool이 신뢰할 수 있는 서명과 인터페이스로 연결하는 데 사용하는 구성 요소에는 .NET 8.0 런타임 설치가 필요합니다. 핵심 .NET 8.0 런타임만 있으면 됩니다. 실행하려는 SignTool 버전에 따라 올바른 플랫폼 런타임을 설치해야 합니다. 아니면 간단히 둘 다 설치해도 됩니다.
예시:
- x64 SignTool.exe: .NET 8.0 런타임 다운로드 - Windows x64 설치 프로그램
- x86 SignTool.exe: .NET 8.0 런타임 다운로드 - Windows x86 설치 프로그램
신뢰할 수 있는 서명 dlib 패키지 다운로드 및 설치
신뢰할 수 있는 서명 dlib 패키지(.zip 파일)를 다운로드하고 설치하려면 다음을 수행합니다.
신뢰할 수 있는 서명 dlib 패키지를 다운로드합니다.
신뢰할 수 있는 서명 dlib 압축된 콘텐츠를 추출하고 원하는 디렉터리의 서명 노드에 설치합니다. 노드는 SignTool을 사용하여 파일에 서명할 노드여야 합니다.
또 다른 옵션은 Windows SDK 빌드 도구 NuGet 패키지와 유사한 NuGet을 통해 신뢰할 수 있는 서명 dlib 패키지를 다운로드하는 것입니다.
.\nuget.exe install Microsoft.Trusted.Signing.Client -Version 1.0.53 -x
JSON 파일 만들기
신뢰할 수 있는 서명을 사용하여 서명하려면 필수 조건의 일부로 만들어진 신뢰할 수 있는 서명 계정 및 인증서 프로필의 세부 정보를 제공해야 합니다. 다음 단계를 완료하여 JSON 파일에 이 정보를 제공합니다.
새 JSON 파일을 만듭니다(예: metadata.json).
신뢰할 수 있는 서명 계정 및 인증서 프로필에 대한 특정 값을 JSON 파일에 추가합니다. 자세한 내용은 신뢰할 수 있는 서명 dlib 패키지에 포함된 metadata.sample.json 파일을 보거나 다음 예를 사용하세요.
{ "Endpoint": "<Trusted Signing account endpoint>", "CodeSigningAccountName": "<Trusted Signing account name>", "CertificateProfileName": "<Certificate profile name>", "CorrelationId": "<Optional CorrelationId value>" }
"Endpoint"
URI 값은 이러한 리소스를 설정할 때 신뢰할 수 있는 서명 계정 및 인증서 프로필을 만든 지역과 일치하는 URI여야 합니다. 표에서 지역과 해당 URI를 확인할 수 있습니다.지역 지역 클래스 필드 엔드포인트 URI 값 미국 동부 EastUS https://eus.codesigning.azure.net
미국 서부3 [1] WestUS3 https://wus3.codesigning.azure.net
미국 중서부 WestCentralUS https://wcus.codesigning.azure.net
미국 서부 2 WestUS2 https://wus2.codesigning.azure.net
북유럽 유럽 북부 https://neu.codesigning.azure.net
서유럽 WestEurope https://weu.codesigning.azure.net
1 선택 사항인
"CorrelationId"
필드는 서명 요청을 빌드 식별자 또는 머신 이름과 같은 자체 워크플로와 연관시키기 위해 제공할 수 있는 불투명 문자열 값입니다.
인증
이 태스크는 일련의 인증 방법을 순서대로 시도하는 DefaultAzureCredential을 사용하여 인증을 수행합니다. 한 메서드가 실패하면 인증이 성공할 때까지 다음 메서드를 시도합니다.
불필요한 시도를 방지하기 위해 각 인증 방법을 개별적으로 사용하지 않도록 설정할 수 있습니다.
예를 들어 EnvironmentCredential을 사용하여 인증하는 경우 다음 입력으로 다른 자격 증명을 사용하지 않도록 설정합니다.
ExcludeEnvironmentCredential: false ExcludeManagedIdentityCredential: true ExcludeSharedTokenCacheCredential: true ExcludeVisualStudioCredential: true ExcludeVisualStudioCodeCredential: true ExcludeAzureCliCredential: true ExcludeAzurePowershellCredential: true ExcludeInteractiveBrowserCredential: true
마찬가지로 예를 들어 AzureCliCredential을 사용하는 경우 순서대로 앞에 오는 여러 메서드로 인증을 시도하는 것을 건너뛰려고 합니다.
SignTool을 사용하여 파일에 서명
SignTool을 호출하여 파일에 서명하려면 다음을 수행합니다.
SDK 빌드 도구, 추출된 Azure.CodeSigning.Dlib 및 metadata.json 파일이 있는 위치를 기록해 둡니다(이전 섹션에서).
다음 경로의 자리 표시자를 1단계에서 기록해 둔 특정 값으로 바꿉니다.
& "<Path to SDK bin folder>\x64\signtool.exe" sign /v /debug /fd SHA256 /tr "http://timestamp.acs.microsoft.com" /td SHA256 /dlib "<Path to Trusted Signing dlib bin folder>\x64\Azure.CodeSigning.Dlib.dll" /dmdf "<Path to metadata file>\metadata.json" <File to sign>
- x86 및 x64 버전의 SignTool은 모두 Windows SDK에 포함되어 있습니다. 해당 버전의 Azure.CodeSigning.Dlib.dll을 참조해야 합니다. 위의 예는 SignTool의 x64 버전에 대한 예입니다.
- 이 문서의 시작 부분에 나열된 종속성에서 권장 Windows SDK 버전을 사용해야 합니다. 그러지 않으면 dlib 파일이 작동하지 않습니다.
신뢰할 수 있는 서명 인증서의 유효 기간은 3일이므로 3일의 유효 기간이 지난 후에도 서명의 지속적인 유효성 검사 성공을 위해 타임스탬프가 중요합니다. Trusted Signing은 Trusted Signing의 Microsoft 공용 RSA 타임스탬프 인증 기관: http://timestamp.acs.microsoft.com/
사용을 권장합니다.
Trusted Signing으로 다른 서명 통합 사용
다음 도구 또는 플랫폼을 사용하여 신뢰할 수 있는 서명과의 서명 통합을 설정할 수도 있습니다.
GitHub Actions: 신뢰할 수 있는 서명에 GitHub 작업을 사용하는 방법을 알아보려면 GitHub Marketplace의 신뢰할 수 있는 서명 - 작업을 참조합니다. GitHub 작업을 설정하고 사용하기 위한 지침을 완료하세요.
Azure DevOps 작업: 신뢰할 수 있는 서명 Azure DevOps 작업을 사용하려면 Visual Studio Marketplace에서 신뢰할 수 있는 서명을 참조합니다. 설치 지침을 완료하세요.
Authenticode용 PowerShell: 신뢰할 수 있는 서명에 PowerShell을 사용하려면 PowerShell 갤러리에서 신뢰할 수 있는 서명을 참조하여 PowerShell 모듈을 설치합니다.
Azure PowerShell - 비즈니스 CI 정책용 앱 제어: CI(코드 무결성) 정책 서명에 신뢰할 수 있는 서명을 사용하려면 새 CI 정책에 서명하기의 지침을 따르고 Az.CodeSigning PowerShell 모듈을 참조하세요.
신뢰할 수 있는 서명 SDK: 고유한 서명 통합을 만들기 위해 오픈 소스 신뢰할 수 있는 서명 SDK를 사용할 수 있습니다. 이 SDK 버전은 목록에 없는 것으로 표시됩니다. 아직 지원되고 있으며 최신 SDK가 릴리스될 때 지원됩니다.