9

我已经为我的程序购买了证书。

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

当我单击该.cer文件时,会显示以下信息:

  • 对于:(我的数据)
  • 作者:Certum 代码签名 CA
  • 过期:2014-10-24

所有这些信息似乎都很好。

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

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

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

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


根据MSDN 博客,到目前为止,我已经在您的计算机帐户上的受信任的根证书颁发机构商店中安装了(我认为我以正确的方式安装了).cer :

  1. 开始->运行->MMC
  2. 文件 -> 添加/删除 Sanp...</li>
  3. 从“添加或删除管理单元”窗口中选择“证书”并单击“添加 >”。选择“计算机帐户”,然后单击“下一步”。
  4. 选择“本地计算机”并单击“完成”。
  5. 打开左侧窗格中的“Trusted Root Certification Authorities”存储并单击“Certificates”,如图 7 所示。然后右键单击右侧窗格并选择“All Task -> Import”。
  6. 导入您创建的上述.cer文件并安装它。

我现在确实在 MMC 看到了我的 cer: 在此处输入图像描述

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

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

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

4

4 回答 4

8

将证书保存在证书存储中是正确的方法。直接使用文件的想法.pfx只是简单地邀请密钥被盗。我敢肯定,为方便起见,提供此类答案的同一个人也会保留保护在某些批处理文件中公开的私钥的密码。无论如何,我敦促每个人都使用证书存储,这就是它们最初创建的原因。

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

signtool.exe sign /a /n "<Issued_To>" /t "<TimeStamp_Server>" <File_Name>
于 2016-04-25T15:42:03.530 回答
4

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

首先,您需要创建一个包含证书和任何签名 CA 证书的pfx文件,然后使用以下/f选项传递:

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

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

于 2013-11-09T19:44:23.490 回答
4

没有看到一个清晰简洁的答案,所以我会添加这个。

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

希望这对某人有所帮助,〜techdude。

于 2014-01-12T03:47:40.530 回答
1

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

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

于 2017-11-08T06:28:40.333 回答