2016-08-05 21 views
0

Windowsで実行可能ファイルのコード署名を理解するために、独自の自己署名証明書を作成してファイルに署名しています。 signtoolはエラーを投げて、「指定されたすべての基準を満たす証明書が見つかりませんでした」と言っています。Windowsで署名できないsigntool

私は間違っていますか?ここで

は、私がやったものだ:

をMSや他のブログからいくつかの指示に従い、私はそうのような自己署名証明書を作成します。Get-ChildItemコマンドレットのコマンドを最後

New-SelfSignedCertificate -certstorelocation Cert:\LocalMachine\my -dnsname cameronnokes.com 

$pwd = ConvertTo-SecureString -String "password" -Force -AsPlainText 

Export-PfxCertificate -cert Cert:\LocalMachine\my\C7A94086D80A42151551A9FCCEACBC0B4A9ABA1A -FilePath 'C:\Users\Cameron Nokes\selfcert.pfx' -Password $pwd 

Get-ChildItem -Recurse Cert:\LocalMachine\my 

は、拇印を表示し、私はそれが期待されるように見えます。

は今、CMDに、私が実行します。

signtool.exe sign /f selfcert.pfx /p password /debug test.ps1 


The following certificates were considered: 
    Issued to: cameronnokes.com 
    Issued by: cameronnokes.com 
    Expires: Sat Aug 05 12:37:28 2017 
    SHA1 hash: C7A94086D80A42151551A9FCCEACBC0B4A9ABA1A 

After EKU filter, 0 certs were left. 
After expiry filter, 0 certs were left. 
After Private Key filter, 0 certs were left. 
SignTool Error: No certificates were found that met all the given criteria. 
+0

コード署名拡張キーの使用方法で証明書を生成する必要があります。あなたはそうではありません。それが、EKUフィルタの後に残っていないという理由です。 New-SelfSignedCertificateでは、EKUを指定できないため、このために使用できません。 –

答えて

2

がCERTREQの癖を覚えている瞬間を取った、それがデフォルトでありますし、あなたはあなたのためのキーを生成するためにそれを使用することができます。

このrequest.infを行います。その後

[NewRequest] 
Subject = "CN=cameronnokes.com" 
Exportable = TRUE 
KeyLength = 2048 
KeySpec = 1 
KeyUsage = 0xA0 
RequestType = Cert 

[EnhancedKeyUsageExtension] 
OID = 1.3.6.1.5.5.7.3.3 ; Code signing 

次のコマンドを実行します。

certreq -new request.inf nothing.csr 

あなたはその後、request.infとnothing.csrの両方を削除することができます。この時点で、個人ストアに自己署名コード署名証明書があります。

$Certificate = Get-ChildItem cert:\CurrentUser\My | 
    Where-Object { $_.EnhancedKeyUsageList.FriendlyName -eq 'Code Signing' -and $_.NotAfter -gt (Get-Date) } | 
    Sort-Object NotAfter | 
    Select-Object -Last 1 

証明書を選択する際にはあまり曖昧になりたくはありません。この例のようなものです。

最後に、PS1の署名:

Set-AuthenticodeSignature test.ps1 -Certificate $Certificate 

シンプルな、右?

クリス

+0

素晴らしいです。これはうまくいきました!私はsigntoolで特別に署名する方法を探していました。証明書を作成した後、SHA1をsigntoolに渡すことで正常に署名できました。完全にシンプル。 Ha。 – ccnokes

+0

これは私が必要とするものとまったく同じように見えますが、 'certreq'を実行するときを除いて、スマートカードデバイスを選択するよう促します。 –

+0

Ah - '[NewRequest]'セクションに 'ProviderName =" Microsoft Enhanced Cryptographic Provider v1.0 "を追加しました。https://social.technet.microsoft.com/Forums/office/en- US/e777c074-9b6a-47bb-a8ce-005b92168aea/insert-smart-card-popup-a-cert-request-using-certreqexeフォーラムの作成時:winserversecurity –

関連する問題