我创建了一个自签名 CA 证书并将其放在当前用户受信任的根证书颁发机构证书存储中。然后,我使用以下方法创建了软件发布者证书:
makecert -n "CN=Temp Name, O=Temp Corporation, C=US" -h 0 ^
-eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" ^
-e 01/01/2015 -ic "Temp CA.cer" -iv "Temp.pvk" ^
-sv "Temp SPC.pvk" -a sha256 "Temp SPC.cer"
...并将生成的文件合并到一个 pfx 文件中,如下所示:
Pvk2Pfx /pvk "Temp SPC.pvk" /spc "Temp SPC.cer" /pfx "Temp SPC.pfx"
我继续使用这个 pfx 文件使用 Visual Studio (2013) 签署一个简单控制台应用程序的 ClickOnce 清单,一切都很好。但是,在测试生成的 Setup.exe 时,我注意到应用程序安装 - 安全警告对话框报告发布者未知。
按照这个 MSDN 指南,我设法通过排除-a sha256
标志使事情按预期工作,结果是:
makecert -n "CN=Temp Name, O=Temp Corporation, C=US" -h 0 ^
-eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" ^
-e 01/01/2015 -ic "Temp CA.cer" -iv "Temp.pvk" ^
-sv "Temp SPC.pvk" "Temp SPC.cer"
我不明白这个。为什么指定-a sha256
SPC 会导致发布者“未知”(以及看起来更加愤怒的对话、黄色盾牌等等)?
编辑:实际上,它变得有点奇怪;我只是尝试更改为-a sha512
,这也有效:
makecert /n "CN=Temp Name, O=Temp Corporation, C=US" /h 0 ^
/eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" ^
/e 01/01/2015 -ic "Temp CA.cer" -iv "Temp.pvk" ^
/sv "Temp SPC.pvk" -a sha512 "Temp SPC.cer"