Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用相同的PFX对程序集和ClickOnce清单进行签名_.net_Visual Studio_Visual Studio 2012_Clickonce_Code Signing - Fatal编程技术网

.net 使用相同的PFX对程序集和ClickOnce清单进行签名

.net 使用相同的PFX对程序集和ClickOnce清单进行签名,.net,visual-studio,visual-studio-2012,clickonce,code-signing,.net,Visual Studio,Visual Studio 2012,Clickonce,Code Signing,我的申请有以下限制: 它必须通过ClickOnce分发,清单由可信证书签名。 还必须对程序集进行签名。 我有一个PFX,发给我的公司用于代码签名1.3.6.1.5.5.7.3.3,如果我生成一个新的密钥对,这似乎可以很好地用于签署清单。但是,如果尝试使用此PFX对程序集进行签名,则会出现以下错误: 无法导入以下密钥文件:mycert.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_key_A48FA8964C1342C1

我的申请有以下限制:

它必须通过ClickOnce分发,清单由可信证书签名。 还必须对程序集进行签名。 我有一个PFX,发给我的公司用于代码签名1.3.6.1.5.5.7.3.3,如果我生成一个新的密钥对,这似乎可以很好地用于签署清单。但是,如果尝试使用此PFX对程序集进行签名,则会出现以下错误:

无法导入以下密钥文件:mycert.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书,或使用以下密钥容器名称手动将证书安装到强名称CSP:VS_key_A48FA8964C1342C1

已取消导入密钥文件mycert.pfx

我证实了这一点

证书的强名称为CSP via。 PFX确实包含私钥。 我尝试了以下方法来解决此问题:

通过MMC删除证书并通过Visual Studio在项目属性中的“从文件中选择”选项将其重新添加到我的个人存储→ 从资源管理器中执行签名、MMC、控制台certutil和“安装PFX”向导。所有这些似乎都没有任何区别

从带有sn的CSP中删除证书,并使用sn和Visual Studio重新添加证书,只需从中选择PFX即可对程序集进行签名,即使该程序集已存在于下拉列表中,您也必须选择它。这两者似乎都没有什么区别

更改PFX文件上的密码,这只会更改错误中VS_KEY_uu之后显示的哈希值。在更改密码后执行上述任何操作都不会产生任何影响

使用sn-p从PFX生成SNK,并使用该SNK对程序集进行签名。这将导致以下错误:

对程序集“myproj.dll”进行签名时出现加密失败-“对程序集进行签名时出错-参数不正确。”


正如我所说的,我可以通过选择inside Visual Studio来使用生成的密钥对程序集进行签名。但是,我真的很想知道如何使用我用于清单的相同PFX对该程序集进行签名。有什么建议吗?

这个问题解决了吗?我也面临着类似的问题。@Corey我已经有将近5年没有参与这个项目了,所以我的记忆很模糊,但遗憾的是,不,我不认为它能完全解决。我相信我只能通过用两个不同的密钥签名来解决这个问题。这并不理想,我们抱怨安装程序没有得到所有客户的信任。后来我离开了那家公司,我不知道他们是否找到了永久解决方案。无论如何,谢谢。值得一提的是,我能够通过使用-keysig参数生成我的pfx来解决不正确的参数问题。openssl pkcs12-export-inkey privatekey.key-in certificate.crt-out mypfx.pfx-keysig然后我使用sn.exe-p mypfx.pfx mystrongname.snk,这导致以下错误消息缺少签名所需的私钥。最后,我能够在这个SO答案中使用powershell脚本来启动并运行:我的问题略有不同,所以我不会将此作为答案添加