수색…


비고

스크립트를 서명하면 스크립트가 PowerShell의 모든 Exeuction 정책을 준수하고 스크립트의 무결성을 보장합니다. 서명 된 스크립트는 서명 후 수정 된 경우 실행되지 않습니다.

스크립트 서명에는 코드 서명 인증서가 필요합니다. 권장 사항 :

  • 개인 스크립트 / 테스트 (공유되지 않음) : 신뢰할 수있는 인증 기관 (내부 또는 제 3 자)의 인증서 또는 자체 서명 된 인증서.
  • 내부 조직과 공유 : 신뢰할 수있는 인증 기관의 인증서 (내부 또는 외부 업체)
  • 외부 조직과 공유 : 신뢰할 수있는 제 3 자 인증 기관의 인증서

about_Signing @ TechNet 에서 자세한 내용을 읽어보십시오.

실행 정책

PowerShell에는 스크립트 나 구성을 실행하는 데 필요한 조건을 제어하는 ​​구성 가능한 실행 정책이 있습니다. 여러 정책에 대한 정책을 설정할 수 있습니다. 컴퓨터, 현재 사용자 및 현재 프로세스. 실행 정책은 쉽게 우회 할 수 있으며 사용자를 제한하지 않고 실수로 서명 정책을 위반하지 않도록 보호합니다.

사용 가능한 정책은 다음과 같습니다.

환경 기술
한정된 허용 된 스크립트가 없습니다.
AllSigned 모든 스크립트에 서명해야합니다.
RemoteSigned 모든 로컬 스크립트 허용. 서명 된 원격 스크립트 만
제한 없음 요구 사항 없음. 모든 스크립트는 허용되지만 인터넷에서 다운로드 한 스크립트를 실행하기 전에 경고합니다
우회로 모든 스크립트가 허용되며 경고가 표시되지 않습니다.
정의되지 않음 현재 범위에 대한 현재 실행 정책을 제거합니다. 부모 정책을 사용합니다. 모든 정책이 정의되지 않은 경우 제한이 사용됩니다.

다음을 사용하여 현재 실행 정책을 수정할 수 있습니다 Set-ExecutionPolicy -cmdlet, 그룹 정책 또는 -ExecutionPolicy 발사 할 때 매개 변수를 powershell.exe 처리합니다.

about_Execution_Policies @ TechNet 에서 자세한 내용을 읽어보십시오.

스크립트 서명하기

스크립트 서명은 Set-AuthenticodeSignature -cmdlet 및 코드 서명 인증서를 사용하여 수행합니다.

#Get the first available personal code-signing certificate for the logged on user
$cert = @(Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0]
    
#Sign script using certificate
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1

다음을 사용하여 .pfx 에서 인증서를 읽을 수도 있습니다.

$cert = Get-PfxCertificate -FilePath "C:\MyCodeSigningCert.pfx"

스크립트는 인증서가 만료 될 때까지 유효합니다. 서명 중에 타임 스탬프 서버를 사용하면 인증서가 만료 된 후에도 스크립트가 계속 유효합니다. 인증서 (루트 권한 포함)에 대한 트러스트 체인을 추가하여 대부분의 컴퓨터가 스크립트에 서명하는 데 사용 된 인증서를 신뢰하도록하는 데 유용합니다.

Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1 -IncludeChain All -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"

Verisign, Comodo, Thawte 등과 같은 신뢰할 수있는 인증서 공급자의 타임 스탬프 서버를 사용하는 것이 좋습니다.

Set-ExecutionPolicy를 사용하여 실행 정책 변경

기본 범위 (LocalMachine)의 실행 정책을 변경하려면 다음을 사용하십시오.

Set-ExecutionPolicy AllSigned

특정 범위에 대한 정책을 변경하려면 다음을 사용하십시오.

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned

-Force 스위치를 추가하여 프롬프트를 표시하지 않을 수 있습니다.

단일 스크립트에 대한 실행 정책 우회

종종 현재 실행 정책을 따르지 않는 서명되지 않은 스크립트를 실행해야 할 수도 있습니다. 이를 수행하는 쉬운 방법은 해당 단일 프로세스의 실행 정책을 우회하는 것입니다. 예:

powershell.exe -ExecutionPolicy Bypass -File C:\MyUnsignedScript.ps1

또는 속기를 사용할 수도 있습니다.

powershell -ep Bypass C:\MyUnsignedScript.ps1

기타 실행 정책 :

정책 기술
AllSigned 신뢰할 수있는 게시자가 서명 한 스크립트 만 실행할 수 있습니다.
Bypass 제한 없음; 모든 Windows PowerShell 스크립트를 실행할 수 있습니다.
Default 일반적으로 RemoteSigned 이지만 ActiveDirectory를 통해 제어됩니다.
RemoteSigned 다운로드 된 스크립트는 실행하기 전에 신뢰할 수있는 게시자가 서명해야합니다.
Restricted 스크립트를 실행할 수 없습니다. Windows PowerShell은 대화 형 모드에서만 사용할 수 있습니다.
Undefined 없음
Unrestricted * bypass 와 유사 함

Unrestricted* Caveat : 인터넷에서 다운로드 한 서명되지 않은 스크립트를 실행하면 실행 전에 권한을 묻는 메시지가 나타납니다.


자세한 정보는 여기를 클릭하십시오 .

현재 실행 정책 가져 오기

현재 세션의 효과적인 실행 정책 얻기 :

PS> Get-ExecutionPolicy
RemoteSigned

현재 세션의 모든 효과적인 실행 정책 나열 :

PS> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

특정 범위에 대한 실행 정책을 나열하십시오 (예 : 방법:

PS> Get-ExecutionPolicy -Scope Process
Undefined

서명 된 스크립트에서 서명 가져 오기

Get Get-AuthenticodeSignature -cmdlet을 사용하여 서명 된 스크립트에서 Authenticode 서명에 대한 정보를 가져옵니다.

Get-AuthenticodeSignature .\MyScript.ps1 | Format-List *

테스트 용 자체 서명 코드 서명 인증서 만들기

개인 스크립트에 서명 할 때 또는 코드 서명을 테스트 할 때 자체 서명 된 코드 서명 인증서를 만드는 것이 유용 할 수 있습니다.

5.0

PowerShell 5.0부터 New-SelfSignedCertificate -cmdlet을 사용하여 자체 서명 된 코드 서명 인증서를 생성 할 수 있습니다.

New-SelfSignedCertificate -FriendlyName "StackOverflow Example Code Signing" -CertStoreLocation Cert:\CurrentUser\My -Subject "SO User" -Type CodeSigningCert

이전 버전에서는 .NET Framework SDK 및 Windows SDK에있는 makecert.exe 도구를 사용하여 자체 서명 된 인증서를 만들 수 있습니다.

자체 서명 된 인증서는 인증서를 설치 한 컴퓨터에서만 신뢰합니다. 공유 할 스크립트의 경우 신뢰할 수있는 인증 기관 (내부 또는 신뢰할 수있는 제 3 자)의 인증서를 사용하는 것이 좋습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow