답변:
서명을하려면 Set-AuthenticodeSignature
cmdlet을 . 물론 이것은 인증서가 필요합니다. 코드 서명 인증서를 만들 수있는 인증 기관 (있는 경우)이있는 경우 그렇지 않으면 자체 서명 된 인증서를 작성하는 다양한 도구가 있습니다.
인증서 저장소에 인증서를 설치 한 후 ( 이를 수행하려면 Windows 탐색기에서 파일 .cer
또는 .pfx
파일을 연 후) 전달하십시오 Set-AuthenticodeSignature
( cert:
제공자 / 드라이브는 저장소의 인증서에 대한 액세스를 제공함).
사용하다
help about_signing
자세한 내용은 해당 도움말 항목 의 온라인 버전 (Windows SDK 도구를 사용하여 자체 서명 된 인증서 만들기 포함 [1] )을 참조하십시오.
[1] 이것이 당신이 말하는 큰 다운로드라고 가정합니다. 필요한 비트 만 설치하거나 다른 도구를 사용할 수 있습니다 (OpenSSL에는 인증서 생성이 포함됩니다). 이를 위해 SDK를 얻는 것은 일회성 활동입니다.
이 PowerShell 스크립트를 사용합니다.
## sign-script.ps1
## Sign a powershell script with a Thawte certificate and
## timestamp the signature
##
## usage: ./sign-script.ps1 c:\foo.ps1
param([string] $file=$(throw “Please specify a script filepath.”))
$certFriendlyName = "Thawte Code Signing"
$cert = gci cert:\CurrentUser\My -codesigning | where -Filter
{$_.FriendlyName -eq $certFriendlyName}
# https://www.thawte.com/ssl-digital-certificates/technical-
# support/code/msauth.html#timestampau
# We thank VeriSign for allowing public use of their timestamping server.
# Add the following to the signcode command line:
# -t http://timestamp.verisign.com/scripts/timstamp.dll
$timeStampURL = "http://timestamp.verisign.com/scripts/timstamp.dll"
if($cert) {
Set-AuthenticodeSignature -filepath $file -cert $cert -IncludeChain All -
TimeStampServer $timeStampURL
}
else {
throw "Did not find certificate with friendly name of `"$certFriendlyName`""
}
인증서를 받으면 사용자 계정에서 가져온 것을 사용하고 싶었습니다. 이 regkey는 상황에 맞는 메뉴 (Windows 7을 사용 하고 있습니다)에서 Sign 옵션을 제공했습니다 . 서명하려는 인증서가 다르게 저장된 경우 끝에 PowerShell 명령을 변경하면 됩니다.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\Microsoft.PowerShellScript.1]
[HKEY_CURRENT_USER\Software\Classes\Microsoft.PowerShellScript.1\Shell]
[HKEY_CURRENT_USER\Software\Classes\Microsoft.PowerShellScript.1\Shell\Sign]
[HKEY_CURRENT_USER\Software\Classes\Microsoft.PowerShellScript.1\Shell\Sign\Command]
@="C:\\\Windows\\\System32\\\WindowsPowerShell\\\v1.0\\\powershell.exe -command Set-AuthenticodeSignature '%1' @(Get-ChildItem cert:\\\CurrentUser\\\My -codesigning)[0]"