使用.cer文件签署.exe(signtool.exe要求的证书名称是什么?)

时间:2013-11-09 17:25:07

标签: windows certificate sign cer

我已为我的计划购买了证书。

我购买它的网站,发给我一个 .cer 文件( 43-some-really-long-name-9962812767788.cer )。没有发送其他文件,但我几乎100%确定我不需要任何其他文件。

当我点击 .cer 文件时,会有以下信息:

  • for :(我的数据)
  • by:Certum Code Signing CA
  • 到期日:2014-10-24

所有这些信息似乎没问题。

我有 .exe 文件,我想用它来签名(所以当用户在Windows上以管理员身份运行它时,他将能够看到证书信息)。

我发现我可以使用 signtool.exe ,但它总是返回一个错误,找不到符合所有条件的证书。

所以如何签署我的程序(将 .cer 添加到我的 .exe 仅使用 .cer 文件(以及我可以从 .cer 文件生成的所有文件)?

我没有证书,.cer和所有证书术语的经验,所以请在回答时考虑到这一点(我是一个简单的人...;)


到目前为止,根据MSDN blog,我已经安装了(我认为我是以正确的方式做到了)。受信任的根证书颁发机构存储在您的计算机帐户上:

  1. 开始 - >运行 - > MMC
  2. 文件 - >添加/删除Sanp in ...
  3. 从“添加或删除管理单元”窗口中选择“证书”,然后单击“添加>”。选择“计算机帐户”,然后单击“下一步”。
  4. 选择“本地计算机”,然后单击“完成”。
  5. 在左侧窗格中打开“受信任的根证书颁发机构”存储,然后单击“证书”,如图7所示。然后右键单击右侧窗格,选择“所有任务 - >导入”。
  6. 导入您创建的上述 .cer 文件并进行安装。
  7. 我确实现在在MMC看到了我的看法: enter image description here

    但是,我不知道如何以正确的方式使用signtool.exe。 命令:

    Signtool sing /v 
    /t http://timestamp.verisign.com/scripts/timstamp.dll 
    /n CER_NAME_HERE FileToSign.exe
    

    失败,因为我不知道我的证书的“CER_NAME_HERE”是什么。

4 个答案:

答案 0 :(得分:6)

将证书保存在证书库中是正确的方法。直接使用.pfx文件的想法只是邀请密钥被盗。我确定提供此类答案的相同人员也会保留密码以保护在某个批处理文件中公开的私钥以方便使用。无论如何,我敦促每个人都使用证书商店,这就是他们首先创建的原因。

您只需将带有私钥的.pfx导入Personal商店即可。将私钥标记为不可导出以增加安全性。然后,您可以使用signtool.exe开关和/n字段的值调用Issued To。不再需要密码。如果您使用machine scope而不是user scope,那么您也必须包含/sm开关。

signtool.exe sign /a /n "<Issued_To>" /t "<TimeStamp_Server>" <File_Name>

答案 1 :(得分:5)

从您的示例中,您实际上并没有指定证书文件。

首先,您需要create a pfx file包含证书和任何签名CA证书,然后使用/f选项传递该证书:

signtool.exe sign /f "blah.pfx" /t http://timestamp.comodoca.com/authenticode "filetosign.exe"

/n选项仅用于从证书库中选择特定证书。

答案 2 :(得分:4)

没有看到简明扼要的答案,所以我会加上这个。

对于Certum,当您去申请证书时,有一个安装选项。用它来安装在您的计算机上。然后,您可以转到浏览器的证书库,从那里选择证书,然后选择导出。从那里,您可以选择导出将采用pfx格式的私钥。

希望这有助于某人, 〜techdude。

答案 3 :(得分:0)

我遇到了同样的问题并使用p12而不是pfx文件类型修复了它。我使用Firefox证书管理器和Comodo的user.crt创建了p12文件。命令行是:

signtool sign / f&#34; C:\ Test.p12&#34; / p password1 / t http://timestamp.comodoca.com/authenticode / v&#34; C:\ Test.msi&#34;