다음을 통해 공유


Set-AuthenticodeSignature

Authenticode 서명을 Windows PowerShell 스크립트 또는 다른 파일에 추가합니다.

구문

Set-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]

설명

Set-AuthenticodeSignature cmdlet은 SIP(Subject Interface Package)를 지원하는 모든 파일에 Authenticode 서명을 추가합니다.

Windows PowerShell 스크립트 파일에서 서명은 스크립트에서 실행되는 명령의 끝을 나타내는 텍스트 블록 형식을 사용합니다. 이 cmdlet이 실행될 때 파일에 서명이 있는 경우 해당 서명은 제거됩니다.

매개 변수

-Certificate <X509Certificate2>

스크립트 또는 파일을 서명하는 데 사용할 인증서를 지정합니다. 인증서를 나타내는 개체 또는 인증서를 가져오는 식을 저장할 변수를 입력하십시오.

인증서를 찾으려면 Get-PfxCertificate 또는 인증서(Cert:) 드라이브의 Get-ChildItem cmdlet을 사용합니다. 인증서가 유효하지 않거나 코드 서명 기관이 없으면 명령이 실행되지 않습니다.

필수 여부

true

위치

2

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-FilePath <string[]>

서명할 파일 경로를 지정합니다.

필수 여부

true

위치

1

기본값

파이프라인 입력 적용 여부

true (ByValue, ByPropertyName)

와일드카드 문자 적용 여부

false

-Force

cmdlet이 읽기 전용 파일에 서명을 추가할 수 있도록 합니다. Force 매개 변수를 사용해도 cmdlet은 보안 제한을 재정의할 수 없습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-HashAlgorithm <string>

Windows에서 파일의 디지털 서명을 계산하는 데 사용하는 해싱 알고리즘을 지정합니다. 기본값은 Windows 기본 해싱 알고리즘인 SHA1입니다.

다른 해싱 알고리즘으로 서명된 파일은 다른 시스템에서 인식되지 않을 수도 있습니다.

필수 여부

false

위치

named

기본값

SHA1

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-IncludeChain <string>

인증서 신뢰 체인의 인증서가 디지털 서명에 포함되어 있는지 확인합니다. 기본값은 "NotRoot"입니다.

유효한 값은 다음과 같습니다.

-- Signer: 서명자의 인증서만 포함합니다.

-- NotRoot: 루트 기관을 제외하고 인증서 체인의 모든 인증서를 포함합니다.

--All: 인증서 체인의 모든 인증서를 포함합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-TimestampServer <string>

지정된 타임스탬프 서버를 사용하여 서명에 타임스탬프를 추가합니다. 타임스탬프 서버의 URL을 문자열로 입력하십시오.

타임스탬프는 인증서를 파일에 추가한 정확한 시간을 나타냅니다. 타임스탬프를 사용하면 사용자 및 프로그램에서 서명 당시 인증서가 유효했는지를 확인할 수 있으므로 인증서가 만료되어도 스크립트 오류를 방지할 수 있습니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-Confirm

명령을 실행하기 전에 확인 메시지를 표시합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-WhatIf

명령을 실제로 실행하지 않고도 명령이 실행될 경우 발생할 수 있는 현상을 설명합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

System.String

파일 경로가 포함된 문자열을 Set-AuthenticodeSignature로 파이프할 수 있습니다.

출력

System.Management.Automation.Signature

예 1

C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert

C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert

설명
-----------
이들 명령은 Windows PowerShell 인증서 공급자에서 코드 서명 인증서를 검색하고 이를 사용하여 Windows PowerShell 스크립트를 서명합니다.

첫 번째 명령은 Get-ChildItem cmdlet 및 Windows PowerShell 인증서 공급자를 사용하여 Cert:\CurrentUser\My 인증서 저장소 하위 디렉터리의 인증서를 가져옵니다. Cert: 드라이브는 인증서 공급자에서 제공하는 드라이브입니다. 인증서 공급자에서만 지원되는 CodeSigningCert 매개 변수는 검색할 인증서를 코드 서명 기관이 있는 인증서로 제한합니다. 이 명령은 결과를 $cert 변수에 저장합니다.

두 번째 명령은 Set-AuthenticodeSignature cmdlet을 사용하여 PSTestInternet2.ps1 스크립트에 서명합니다. FilePath 매개 변수를 사용하여 스크립트 이름을 지정하고 Certificate 매개 변수를 사용하여 $cert 변수에 저장되는 인증서를 지정합니다.





예 2

C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx 

C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert

설명
-----------
이들 명령은 Get-PfxCertificate cmdlet을 사용하여 코드 서명 인증서를 찾습니다. 그런 다음 이 인증서를 사용하여 Windows PowerShell 스크립트에 서명합니다. 

첫 번째 명령은 Get-PfxCertificate cmdlet을 사용하여 C:\Test\MySign.pfx 인증서를 찾아서 $cert 변수에 저장합니다.

두 번째 명령은 Set-AuthenticodeSignature를 사용하여 스크립트에 서명합니다. Set-AuthenticodeSignature의 FilePath 매개 변수는 서명할 스크립트 파일의 경로를 지정하고 Cert 매개 변수는 인증서가 포함된 $cert 변수를 Set-AuthenticodeSignature로 전달합니다.

인증서 파일이 암호로 보호되는 경우 Windows PowerShell은 암호를 묻는 메시지를 표시합니다.





예 3

C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll"

설명
-----------
이 명령은 신뢰 체인에 루트 기관을 포함하는 디지털 서명을 추가하며 타사 타임스탬프 서버에서 서명됩니다. 

먼저 FilePath 매개 변수를 사용하여 서명할 스크립트를 지정하고 Certificate 매개 변수를 사용하여 $cert 변수에 저장되는 인증서를 지정합니다. 이 명령은 IncludeChain 매개 변수를 사용하여 루트 기관을 비롯한 신뢰 체인의 모든 서명을 포함합니다. 또한 이 명령은 TimeStampServer 매개 변수를 사용하여 서명에 타임스탬프를 추가합니다. 그러면 인증서가 만료되어도 스크립트에 오류가 발생하지 않습니다.





참고 항목

개념

about_Signing
about_Execution_Policies
Get-AuthenticodeSignature
Get-PfxCertificate
Get-ExecutionPolicy
Set-ExecutionPolicy