【发布时间】:2018-03-20 20:39:12
【问题描述】:
我的老板最近从 Comodo 购买了一个代码签名证书。我现在的任务是使用强名称密钥签名使其在 VS2013 中工作,也可能作为构建后事件。他在同一台机器(Windows 8.1 64 位笔记本电脑)和同一浏览器(Firefox 59.0.1 64 位)上完成了整个购买过程。我在 Firefox 中转到菜单 > 选项 > 隐私和安全 > 查看证书 > 您的证书屏幕,并选择了刚刚购买的证书。然后我单击“备份”按钮,将其命名为通用名称,例如 companyCert.p12(除了 .p12,我没有任何其他选择或设置),单击“保存”按钮,并输入一个 16 个字符的字母数字(大写和小写)密码,然后单击“确定”按钮。我收到弹窗说导出成功。
当我尝试通过 mmc 将该 .p12 或扩展名重命名的 .pfx 文件导入本地用户的个人或受信任的发布者证书存储区时(甚至尝试 certmgr.msc 只是为了好玩),我得到:
您输入的密码不正确。
当我尝试使用 .p12 文件在 VS 中构建我的程序集以对其进行强名称密钥签名时,我得到:
密钥文件“absolute\path\to\cert\companyCert.p12”不包含公钥/私钥对。
当我尝试做同样的事情但将扩展名重命名为 .pfx 时,系统提示我输入密码,所以我输入了密码,然后我得到:
编码或解码操作期间发生错误。
然后我尝试使用命令提示符(以管理员身份运行)和 CertUtil 使用以下行导入 .p12/.pfx:
certutil -importPFX -user "absolute\path\to\cert\companyCert.p12" AT_SIGNATURE
我被提示输入密码,我输入并得到:
CertUtil:-importPFX 命令失败:0x80092002 (-2146885630 CRYPT_E_BAD_ENCODE)
CertUtil:在编码或解码操作期间发生错误。
对于 .p12 和 .pfx。
我已经多次尝试了所有这些,以防万一我在密码或其他方面做错了什么。我尝试返回 Firefox 证书,而不是点击“备份”
您的证书屏幕中的按钮,单击代码签名证书,然后单击“查看...”,这会将我带到证书查看器窗口,在该窗口中单击详细信息选项卡并单击
“导出”按钮。在那里,我可以选择 X.509 证书:
PEM(.crt/.pem,有链或无链)
DER(没有链的.der)
和 PKCS#7(.p7c 带或不带链)
在尝试进行代码签名时,除了 .der 之外,我什么都做了,但无济于事。我能够将其中一些导入本地用户的个人和受信任的出版商商店,但我无法获得任何
他们在 VS 中工作以进行强名称密钥签名。
据我了解,我需要能够在操作系统级别的本地存储中获取私钥/公钥证书,而不仅仅是 Firefox 的浏览器级别,然后我应该能够导出我需要的方式。那是对的吗?如果不是,请有人告诉我我能做些什么来让它工作。
【问题讨论】:
-
certutil -dump path\pfxfile.pfx命令返回什么? -
@Crypt32 我得到了:
An error occurred during encode or decode operation. 0x80092002 (-2146885630 CRYPT_E_BAD_ENCODE) CertUtil: -dump command FAILED: 0x80092002 (-2146885630 CRYPT_E_BAD_ENCODE) CertUtil: An error occurred during encode or decode operation.所以基本上和以前一样。 -
这意味着您导出的证书内容格式错误。
-
啊。谢谢。我只是看看我是否可以通过另一个浏览器替换它,因为他们的支持团队将错误归咎于 Firefox。
标签: windows visual-studio firefox x509certificate code-signing