首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >签名工具选择错误(旧)证书进行代码签名。

签名工具选择错误(旧)证书进行代码签名。
EN

Stack Overflow用户
提问于 2016-04-08 09:06:46
回答 2查看 2.3K关注 0票数 2

我有一个我完全不明白的问题。几天前,我从我们的供应商(GlobalSign)那里发布了一个新的协同设计证书。

与进行构建/协同设计的用户登录到构建服务器后,我启动了certmgr,导航到个人证书存储,删除了旧证书的。然后,我使用Import对话框导入新证书,包括它的私钥。

测试构建表明,签名工具仍然使用旧的证书对应用程序进行签名。但是,我无法在certmgr中的任何地方找到该证书,甚至不能搜索证书SHA1校验和。

在googling之后,我找到了这个博客:http://qualapps.blogspot.de/2008/07/installing-code-signing-certificate.html,它声明如下:

删除你的旧证书。如果要更新现有证书,那么保存旧证书通常并不有用,如果签名工具正在搜索证书存储区,拥有多个证书将破坏SIGNTOOL。转到“控制面板/ Internet选项/内容”,单击“证书”,选择旧证书,然后单击“删除”。如果允许PVKIMPRT决定将其放在何处,旧证书可能会出现在个人页面上。

我遵守了这些指示,但我唯一能找到的就是新的证书。

代码语言:javascript
复制
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool" sign /v /sm /n "my company name" /tr http://tsa.starfieldtech.com "the-setup.exe"

“我的公司名称”是包含在旧证书和新证书中的名称。

我怎样才能找出旧证书还保存在哪里,然后删除它?我怎样才能强迫签名工具使用新证书,或者至少失败?

EN

回答 2

Stack Overflow用户

发布于 2016-04-20 12:20:30

使用PFX文件并引用它的解决方案是一个很好的解决方案。

但是,您可以尝试以下方法:

  • 将参数/s MY添加到签名工具参数链中。“我的”链接到个人商店。
  • 在certmgr.msc中,如果其他商店不包含旧证书的副本,请查看它们
  • /a添加到参数链中。这将导致“自动选择最佳签名证书”(无论这意味着:)
  • 您可以等到旧证书过期。之后,它应该只自动使用新的证书。
票数 1
EN

Stack Overflow用户

发布于 2016-04-27 20:49:32

我的情况似乎类似,尽管在我的例子中,将证书文件的密码放在构建脚本中并不是一个选项。我在使用MMC插件查看证书存储(比如certmgr.msc)时遇到了困难,因为Windows 2012 R2不允许我的非管理构建用户使用插件。我尝试了一下我在这里找到的PowerShell脚本的一个变体(https://social.technet.microsoft.com/Forums/windowsserver/en-US/7ed48943-22e2-4afd-aa77-2424d2a9eee1/how-to-delete-archived-certificates-using-the-certutil-command?forum=winserversecurity):

代码语言:javascript
复制
$store = New-Object  System.Security.Cryptography.X509Certificates.X509Store "My","CurrentUser"

$MaxAllowedIncludeArchive = ([System.Security.Cryptography.X509Certificates.openflags]::MaxAllowed –bor [System.Security.Cryptography.X509Certificates.openflags]::IncludeArchived)
$store.Open($MaxAllowedIncludeArchive)

[System.Security.Cryptography.X509Certificates.X509Certificate2Collection] $certificates = $store.certificates

foreach ($cert in $certificates)
{
  Write-Host $cert
}

$store.Close()

它向我展示了为我制造冲突的证书。(奇怪的是,尝试使用certutil -viewstore My会产生一组不同的证书。(令人遗憾的是,证书商店的放置仍然让我感到困惑。)

在我的例子中,问题是我想要一个更新的SHA256证书,而不是旧的SHA1证书,因此在我的signtool命令中添加一个适当的/i参数(带有SHA256颁发者的名称)解决了我的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36495663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档