Jas*_*onD 384 passwords visual-studio-2010 pfx visual-studio
我们刚刚将Visual Studio 2008项目升级到Visual Studio 2010.我们使用Verisign代码签名证书对所有程序集进行了强签名.自升级以来,我们不断收到以下错误:
无法导入以下密钥文件:companyname.pfx.密钥文件可能受密码保护.要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_KEY_3E185446540E7F7A
这种情况发生在一些开发者机器而不是其 用于解决此问题的一些方法在某些时候起作用包括:
我已经尝试使用SN.EXE实用程序(强名称工具)来注册具有强名称CSP的密钥,如错误消息所示,但每当我使用Visual Studio 2010附带的版本运行任何选项的工具时,SN .EXE只列出其命令行参数而不是执行任何操作.无论我提供什么参数,这都会发生.
为什么会发生这种情况,以及解决这个问题的明确步骤是什么?我即将放弃ClickOnce安装和Microsoft代码签名.
Bra*_*ter 440
我也遇到了这个问题.我能够通过运行sn -i <KeyFile> <ContainerName>
(将密钥对安装到命名容器中)来解决问题.
sn
通常作为Windows SDK的一部分安装.例如C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe
.很可能此位置不在标准环境的搜索路径上.但是,Visual Studio安装的"Developer Command Prompt"会添加通常包含正确位置的其他信息.
根据您的帖子看起来像
sn -i companyname.pfx VS_KEY_3E185446540E7F7A
这必须从PFX文件的位置运行,如果您在VS 2010中加载了解决方案,只需右键单击解决方案资源管理器中的pfx文件,然后选择打开命令提示符,它将启动.net 2010 cmd提示工具.正确的目录.
在运行这个sn命令之前,我确实通过右键单击并选择安装来重新安装pfx,但这不起作用.需要注意的是,它可能是提供解决方案的两者的组合.
希望这有助于解决您的问题.
小智 124
我发现了一个可以帮助您在多开发人员环境中成功构建的修复程序:
而不是更改密码(导致.pfx更改),重新选择组合框中的.pfx文件.然后调用密码对话框.输入密码后,项目将构建正常.每个开发人员都可以在本地计算机上执行此操作,而无需实际修改.pfx文件.
我仍然无法在我们的构建服务器计算机上签署程序集.我在那里得到了同样的错误,但是使用sn.exe -i方法并没有解决buildserver的问题.
Bea*_*hed 41
我有同样的问题,删除商店和阅读不起作用.我必须做以下事情.
获取OpenSSL的副本.它适用于Windows.或者使用Linux盒子,因为他们几乎都拥有它.
运行以下命令以导出到密钥文件:
openssl pkcs12 -in certfile.pfx -out backupcertfile.key
openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
Run Code Online (Sandbox Code Playgroud)然后在项目属性中,您可以使用PFX文件.
Dar*_*usz 32
我发现在某些情况下,您应该在安装之前尝试删除此密钥.所以做以下事情:
sn -d VS_XXXX
sn -i mykey.pfx VS_XXX
Jar*_*das 31
VSCommands 2010(Visual Studio插件)可以自动为您解决此问题 - 只需右键单击错误,然后单击菜单中的"应用修复".您可以从Visual Studio库中获取它.
atl*_*ste 27
在尝试了所有这些解决方案(以及更多)后,我发现问题出在其他地方.对于那些在购买证书后遇到同样痛苦的人,我会分享我的问题的解决方案.
行为
我知道'sign'对DLL或EXE应用强名称而不是authenticode.这就是为什么signtool 可以在这种情况下工作,但Visual Studio中的"sign"将无效.
原因
在过去,我有过Verisign证书的经验.它们KeySpec=2
在证书中有一个- 与Visual Studio中的"签名"功能一起使用.这些证书适用于Visual Studio和signtool.
我现在从Comodo购买了证书,KeySpec=1
证书代码签名证书不正确.这意味着这些证书可以与signtool(authenticode)一起使用,但不能使用强命名(符号下拉列表).
解
有两种方法可以解决此问题:
sn -k [name].snk
.使用snk对程序集进行签名,然后使用带有代码签名证书的signtool,使用authenticode签名对DLL/EXE进行签名.虽然这看起来很奇怪,但据我所知,这是处理证书的正确方法,因为强名称与authenticode具有不同的目的(有关其工作原理的详细信息,请参阅此链接).KeySpec=2
.这样做的过程赘述.因为我想使用多个强名称,所以我目前使用选项(1),尽管选项(2)也有效.
为确保此解决方案永远不会丢失,以下是解决方案2的过程:
KeySpec=1
)导出到PFX文件.注意:请将此文件备份到安全位置并测试文件是否可以在另一台机器上正确导入,如果您真的想要安全地播放它!certutil -importPFX -user <pfxfilename> AT_SIGNATURE
你现在应该有一个密钥集/证书KeySpec=2
.如果需要,您现在可以再次使用MMC将其导出到另一个PFX文件中.
Rom*_*meo 10
若要在Visual Studio 2012中解决此问题,我右键单击项目,属性 - >"签名",然后取消选中"签署ClickOnce清单".
我在“选择强名称密钥文件”下拉框中重新选择了密钥(pfx)文件,然后在“输入密码”弹出窗口中提供了密码。保存了我的项目,并且rebuild.build成功。
保存您的项目并进行重建。
如果收到错误消息:“尝试引用不存在的令牌”,则忽略它并继续以下步骤
点击“更改密码”按钮:
在所有三个框中输入原始密码,然后单击“确定”。如果您想更改密码(或者您的旧密码不符合复杂性要求),则可以立即进行。
保存您的项目并进行重建。
归档时间: |
|
查看次数: |
207205 次 |
最近记录: |