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