답변:
Windows Server 2012, Windows Server 2012 R2 또는 Windows 8.1과 같은 Windows 버전 이상을 사용하는 경우 이제 MakeCert는 더 이상 사용되지 않으며 PowerShell Cmdlet New-SelfSignedCertificate를 사용 하는 것이 좋습니다 .
Windows 7과 같은 이전 버전을 사용하는 경우 MakeCert 또는 다른 솔루션을 사용해야합니다. 일부 사람들 은 PSPKI (Public Key Infrastructure Powershell) 모듈을 제안 합니다 .
한 번에 자체 서명 된 코드 서명 인증서 (SPC- Software Publisher Certificate )를 작성할 수 있지만 다음을 수행하는 것이 좋습니다 .
makecert -r -pe -n "CN=My CA" -ss CA -sr CurrentUser ^
-a sha256 -cy authority -sky signature -sv MyCA.pvk MyCA.cer
(^ = 배치 명령 줄을 줄 바꿈 허용)
내보낼 수있는 개인 키 (-pe)와 함께 자체 서명 된 (-r) 인증서를 만듭니다. 이름은 "My CA"이며 현재 사용자의 CA 저장소에 있어야합니다. 우리는 SHA-256 알고리즘을 사용하고 있습니다. 키는 서명 (-sky)을위한 것입니다.
개인 키는 MyCA.pvk 파일에 저장되고 인증서는 MyCA.cer 파일에 저장해야합니다.
신뢰할 수없는 경우 CA 인증서를 가질 필요가 없으므로 Windows 인증서 저장소로 가져와야합니다. 인증서 MMC 스냅인을 사용할 수 있지만 명령 행에서 사용할 수 있습니다 .
certutil -user -addstore Root MyCA.cer
makecert -pe -n "CN=My SPC" -a sha256 -cy end ^
-sky signature ^
-ic MyCA.cer -iv MyCA.pvk ^
-sv MySPC.pvk MySPC.cer
위와 거의 동일하지만 발급자 키와 인증서 (-ic 및 -iv 스위치)를 제공하고 있습니다.
또한 인증서와 키를 PFX 파일로 변환하려고합니다.
pvk2pfx -pvk MySPC.pvk -spc MySPC.cer -pfx MySPC.pfx
PFX 파일을 보호하려면 -po 스위치를 추가하십시오. 그렇지 않으면 PVK2PFX는 암호없이 PFX 파일을 생성합니다.
signtool sign /v /f MySPC.pfx ^
/t http://timestamp.url MyExecutable.exe
( 타임 스탬프가 중요한 이유보기 )
PFX 파일을 인증서 저장소로 가져 오는 경우 (PVKIMPRT 또는 MMC 스냅인을 사용할 수 있음) 다음과 같이 코드에 서명 할 수 있습니다.
signtool sign /v /n "Me" /s SPC ^
/t http://timestamp.url MyExecutable.exe
가능한 타임 스탬프 URL signtool /t
은 다음과 같습니다.
http://timestamp.verisign.com/scripts/timstamp.dll
http://timestamp.globalsign.com/scripts/timstamp.dll
http://timestamp.comodoca.com/authenticode
.NET 개발자가 아닌 경우 Windows SDK 및 .NET 프레임 워크의 사본이 필요합니다. 현재 링크는 SDK 및 .NET에서 사용할 수 있습니다 (makecert를에 설치 C:\Program Files\Microsoft SDKs\Windows\v7.1
). 귀하의 마일리지가 다를 수 있습니다.
MakeCert는 Visual Studio 명령 프롬프트에서 사용할 수 있습니다. Visual Studio 2015에는 Windows 7의 시작 메뉴에서 "VS 2015 용 개발자 명령 프롬프트"또는 "VS2015 x64 기본 도구 명령 프롬프트"(아마도 모두 동일한 폴더에 있음)에서 시작할 수 있습니다.
E=your@email
. 예 :makecert -pe -n "CN=My SPC,E=email@domain" ........
-eku 1.3.6.1.5.5.7.3.3
CERT는이 코드 서명에 사용할 수 있도록 (내가 PowerShell을 그것을 누락 된 경우 스크립트에 서명하지 알고)
답변에서 언급했듯이 사용되지 않는 방법으로 자신의 스크립트에 서명하려면 New-SelfSignedCertificate를 사용해야 합니다.
New-SelfSignedCertificate -DnsName email@yourdomain.com -Type CodeSigning -CertStoreLocation cert:\CurrentUser\My
Export-Certificate -Cert (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0] -FilePath code_signing.crt
[0]은 둘 이상의 인증서가있는 경우에이 작업을 수행합니다. 인덱스가 사용하려는 인증서와 일치하는지 확인하십시오.
Import-Certificate -FilePath .\code_signing.crt -Cert Cert:\CurrentUser\TrustedPublisher
Import-Certificate -FilePath .\code_signing.crt -Cert Cert:\CurrentUser\Root
Set-AuthenticodeSignature .\script.ps1 -Certificate (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)
분명히 키를 설정 한 후에는 다른 스크립트로 서명 할 수 있습니다. 이 문서
에서보다 자세한 정보와 문제 해결 도움말을 얻을 수 있습니다 .
(get-ChildItem ...)
두 개 이상의 인증서 를 반환 했기 때문에 끝에 "[0]"을 (를) 입력하면 효과가 있습니다. 마찬가지로Export-Certificate -Cert (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0] -FilePath code_signing.crt
로저의 대답은 매우 도움이되었습니다.
그래도 사용하는 데 약간의 어려움이 있었고 "Windows가이 드라이버 소프트웨어의 게시자를 확인할 수 없습니다"라는 오류 대화 상자가 계속 나타납니다. 열쇠는 테스트 루트 인증서를 설치하는 것이 었습니다.
certutil -addstore Root Demo_CA.cer
로저의 대답은 그다지 다루지 않았습니다.
여기 나를 위해 일한 배치 파일이 있습니다 (내 .inf 파일은 포함되어 있지 않습니다). GUI 도구를 전혀 사용하지 않고 처음부터 끝까지 모든 작업을 수행하는 방법을 보여줍니다 (몇 가지 암호 프롬프트 제외).
REM Demo of signing a printer driver with a self-signed test certificate.
REM Run as administrator (else devcon won't be able to try installing the driver)
REM Use a single 'x' as the password for all certificates for simplicity.
PATH %PATH%;"c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin";"c:\Program Files\Microsoft SDKs\Windows\v7.0\Bin";c:\WinDDK\7600.16385.1\bin\selfsign;c:\WinDDK\7600.16385.1\Tools\devcon\amd64
makecert -r -pe -n "CN=Demo_CA" -ss CA -sr CurrentUser ^
-a sha256 -cy authority -sky signature ^
-sv Demo_CA.pvk Demo_CA.cer
makecert -pe -n "CN=Demo_SPC" -a sha256 -cy end ^
-sky signature ^
-ic Demo_CA.cer -iv Demo_CA.pvk ^
-sv Demo_SPC.pvk Demo_SPC.cer
pvk2pfx -pvk Demo_SPC.pvk -spc Demo_SPC.cer ^
-pfx Demo_SPC.pfx ^
-po x
inf2cat /drv:driver /os:XP_X86,Vista_X64,Vista_X86,7_X64,7_X86 /v
signtool sign /d "description" /du "www.yoyodyne.com" ^
/f Demo_SPC.pfx ^
/p x ^
/v driver\demoprinter.cat
certutil -addstore Root Demo_CA.cer
rem Needs administrator. If this command works, the driver is properly signed.
devcon install driver\demoprinter.inf LPTENUM\Yoyodyne_IndustriesDemoPrinter_F84F
rem Now uninstall the test driver and certificate.
devcon remove driver\demoprinter.inf LPTENUM\Yoyodyne_IndustriesDemoPrinter_F84F
certutil -delstore Root Demo_CA
Powershell에서 New-SelfSignedCertificate 명령을 사용하는 것은 매우 쉽습니다 . powershell을 열고이 3 가지 명령을 실행하십시오.
1) 인증서 생성 :
$ cert = New-SelfSignedCertificate -DnsName www.yourwebsite.com-유형 코드 서명 -CertStoreLocation 인증서 : \ CurrentUser \ My2) 비밀번호 설정 .
$ CertPassword = ConvertTo-SecureString -String "my_passowrd"-Force –AsPlainText3) 내보내기 :
Export-PfxCertificate -Cert "cert : \ CurrentUser \ My \ $ ($ cert.Thumbprint)"-FilePath "d : \ selfsigncert.pfx"-Password $ CertPassword
인증서 selfsigncert.pfx 는 @에 있습니다.D:/
선택적 단계 : 시스템 환경 변수에 인증서 비밀번호를 추가해야합니다. cmd에 아래를 입력하여 그렇게하십시오 :setx CSC_KEY_PASSWORD "my_password"
PowerShell 4.0 (Windows 8.1 / Server 2012 R2)부터 makecert.exe 없이 Windows에서 인증서를 만들 수 있습니다. 있습니다.
필요한 명령은 New-SelfSignedCertificate 및 Export-PfxCertificate입니다. 입니다.
지침은 PowerShell을 사용하여 자체 서명 된 인증서 생성에 있습니다.