【问题标题】:Visual Studio 2010 Assembly Signing: An attempt was made to reference a token that does not existVisual Studio 2010 程序集签名:尝试引用不存在的令牌
【发布时间】:2011-02-15 05:40:00
【问题描述】:

我正在尝试使用我们的 PFX 文件在 Visual Studio 2010 中对程序集进行签名,在我输入私钥的密码后,我得到“尝试引用不存在的令牌”

【问题讨论】:

    标签: code-signing visual-studio-2010


    【解决方案1】:

    以管理员身份运行 Visual Studio 为我解决了这个问题。

    【讨论】:

      【解决方案2】:

      我也有同样的问题。只需在 Visual Studio 命令提示符下使用 signtool 即可。有时signtool 会声称您的密码无效,但通常在尝试几次后它开始为我工作。

      signtool.exe sign /f YOURCERT.pfx /p YOURPASSWORD YOURTARGET.exe

      【讨论】:

      • Perfect 作为构建后步骤工作,只需更改为 signtool.exe sign /f YOURCERT.pfx /p YOURPASSWORD YOURTARGET.exe
      • 我也遇到了疯狂的问题,最终不得不将 PFX 导入我的本地计算机商店并在后期构建中使用它:“%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\ bin\signtool.exe" 签名 /a /n "你的 CN" /sm /t timestamp.comodoca.com/authenticode "$(TargetPath)"
      • 如何使用 ClickOnce 和清单签名来做到这一点?您不必在构建期间对其进行签名以使其正常工作吗?
      • 效果很好。顺便说一句,最好给你的 exe 加上时间戳。您的证书提供商通常会为您提供时间戳服务器的 URL(例如 http:\\timestamp.digicert.com)。然后是这样的:signtool.exe sign /f YOURCERT.pfx /t YOURTIMESERVERURL /p YOURPASSWORD YOURTARGET.exe
      • 对于 ClickOnce 位:mage.exe" -sign $(TargetPath).manifest -CertFile $(ProjectDir)MyPfx.pfx -Password MyPwd * mage.exe" -签名 $(TargetDir)$(TargetName).vsto -CertFile $(ProjectDir)MyPfx.pfx -Password MyPwd
      【解决方案3】:

      如果您希望 Visual Studio 自动签署文件并使用 ClickOnce,这就是我必须做的:

      • 获取OpenSSL 的副本。它是available for Windows。或者使用 Linux 机器,因为他们几乎都拥有它。

      • 运行以下命令导出到密钥文件:

        openssl pkcs12 -in certfile.pfx -out backupcertfile.key
        
        openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
        

      然后在项目属性中就可以使用 PFX 文件了。

      【讨论】:

      【解决方案4】:

      这对我有用。

      首先尝试在为您的项目启用密钥签名选项的情况下构建您的项目。构建将失败,转到“输出”窗口,您将看到如下错误:

      错误 1 ​​无法导入以下密钥文件:MyKey.pfx。这 密钥文件可能受密码保护。要更正此问题,请尝试导入 再次证书或手动将证书安装到 Strong 使用以下密钥容器名称命名 CSP: VS_KEY_7B9423FE45F4DBEB Project.SomeName

      保存密钥库名称(例如 VS_KEY_7B9423FE45F4DBEB),稍后您将需要它。

      现在按照以下步骤操作:

      1. 在 Windows 证书存储中导入数字证书密钥 (PFX)。在 Windows 资源管理器中双击 PFX 密钥并将其安装/导入到您的密钥存储区(我实际上是通过选择手动选择存储区将其导入到受信任的根证书存储区)。
      2. 以普通用户身份启动 Visual Studio 2010(作为管理员,我不会遇到此密钥签名问题,但我想以用户身份调试我的应用程序)(在整个过程中保持打开状态)
      3. 从开始菜单打开Visual Studio Command Prompt (2010) 快捷方式(x64,如果您在 x64 机器上)作为管理员(右键单击 Visual Studio 2010 命令提示符快捷方式并选择以管理员身份运行)。这应该会打开一个带有 Visual Studio 环境设置的管理命令提示符。 (不是常规的命令提示符)
      4. 在命令提示符中,输入 sn -d VS_KEY_xxxx 以及您在开头保存的错误消息中的密钥库名称
      5. 然后输入sn -i xxx.pfx VS_KEY_xxxx,提示时输入密码,如果是数字证书则输入xxx.pfx
      6. 返回 Visual Studio 并重建您的项目

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-12
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多