我的老板最近从 Comodo 购买了代码签名证书。我现在的任务是使用强名称 key 签名使其在 VS2013 中工作,也许也作为构建后事件。他在同一台计算机(Windows 8.1 64 位笔记本电脑)上并使用相同的浏览器(Firefox 59.0.1 64 位)完成了整个购买过程。我已转到 Firefox 中的“菜单”>“选项”>“隐私和安全”>“查看证书”>“您的证书”屏幕,并选择了刚刚购买的证书。然后,我单击“备份”按钮,将其命名为通用名称,例如 companyCert.p12(除了 .p12,我没有任何其他选择或设置),单击“保存”按钮,然后输入 16 个字符的字母数字(大写)和小写)密码,然后单击“确定”按钮。我收到弹出窗口说导出成功。
当我尝试通过 mmc 将 .p12 或扩展名重命名的 .pfx 文件导入本地用户的个人或受信任的发布者证书存储时(甚至尝试了 certmgr.msc 只是为了好玩),我得到:
The password you entered is incorrect.
当我尝试使用 .p12 文件在 VS 中构建程序集以对它们进行强名称 key 签名时,我得到:
The key file 'absolute\path\to\cert\companyCert.p12' does not contain a public/private key pair.
当我尝试执行相同的操作但将扩展名重命名为 .pfx 时,系统会提示我输入密码,因此我输入密码,然后得到:
An error occurred during encode or decode operation.
因此,我尝试使用命令提示符(以管理员身份运行)导入 .p12/.pfx,并使用以下行导入 CertUtil:
certutil -importPFX -user "absolute\path\to\cert\companyCert.p12" AT_SIGNATURE
系统提示我输入密码,我输入了密码,并得到:
CertUtil: -importPFX command FAILED: 0x80092002 (-2146885630 CRYPT_E_BAD_ENCODE)
CertUtil: An error occurred during encode or decode operation.
适用于 .p12 和 .pfx。
我已经尝试了所有这些好几次,以防万一我的密码或其他错误。我尝试返回 Firefox 证书,而不是单击“备份”
“您的证书”屏幕中的按钮,单击代码签名证书,然后单击“查看...”,这会将我带到“证书查看器”窗口,在其中单击“详细信息”选项卡,然后单击
“导出”按钮。在那里,我可以选择 X.509 证书:
PEM (.crt/.pem, both with or without chain)
DER (.der without chain)
and PKCS#7 (.p7c with or without chain)
在尝试进行代码签名时,我做了除 .der 以外的所有操作,但无济于事。我能够将其中一些导入到本地用户的个人和受信任的发布商商店中,但我无法获取任何
他们在 VS 中进行强名称 key 签名。
据我了解,我需要能够在操作系统级别的本地存储中获取私钥/公钥证书,而不仅仅是 Firefox 的浏览器级别,然后我应该能够按照我需要的方式导出。那是对的吗?如果不是,请有人告诉我该怎么做才能让它发挥作用。
最佳答案
就我而言,我可以在运行 Windows 10 的桌面中成功导入 .pfx 文件,但当我尝试在运行 Windows Server 2016 的服务器中导入证书时,我收到错误“您输入的密码不正确” “。
解决问题:
- 从我的 Windows 中删除证书(使用管理控制台/证书)
- 将原始 .pfx 证书导入到我的台式计算机
- 导出证书(使用管理控制台/证书)
诀窍是:
导出证书时,选择加密方式“TripleDES-SHA1”。
关于windows - 代码签名证书的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393702/