生成用于签署通用Windows平台(UWP)应用程序的证书

时间:2020-04-30 17:36:08

标签: uwp certificate code-signing

我正在尝试生成一个适合签署Microsoft通用Windows平台(UWP)应用程序的证书。我有一份可以自行签名的有效证书,另一份是由我公司内部的证书颁发机构根据我精心制作并提交给他们的CSR(证书请求)文件颁发的。

要生成自签名证书,我使用了以下powershell命令

New-SelfSignedCertificate -Type Custom -Subject "<full certificate DN>" -KeyUsage DigitalSignature -FriendlyName "MyFriendlyName" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")

要生成内部CA颁发的证书,我创建了具有相同属性的CSR:

KeyUsage: Digital Signature
ExtendedKeyUsage: CodeSigning (1.3.6.1.5.5.7.3.3)
2048 bit key
algo: AES-SHA256

默认使用其他大多数属性。

正如我所说,自签名证书有效,Visual Studio将不接受CA颁发的证书。这是我尝试分配CA颁发的证书进行签名时遇到的错误:

清单设计器无法导入证书。 您选择的证书无效,因此无法签名 过期或有其他问题。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=241478

编辑-注意:CA Root和中级证书已安装在相应证书存储区中的计算机上

以下是证书的属性并排。 有什么方法可以知道失败的证书到底有什么问题吗?我觉得我已经满足了所有UWP签名要求。

更新

事情变得陌生。这些步骤有效:

  1. 右键单击并从解决方案资源管理器中“发布”我的UWP应用
  2. 选择在发布时不要对软件包进行签名
  3. 使用我的CA颁发的证书的正确指纹(SHA),通过命令行使用SignTool.exe对软件包进行签名,它可以正常工作!

这是我的SignTool命令行:

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\signtool.exe" sign /v /fd sha256 /sha1 <my CA-issued cert thumbprint> "path-to-my-unsigned.msix"

带有/ v(详细信息)的Signtool输出:

The following certificate was selected:
    Issued to: <my org>
    Issued by: <my internal CA name>
    Expires:   Mon Apr 30 11:41:36 2035
    SHA1 hash: <CA-Issued cert hash>

Done Adding Additional Store
Successfully signed: path-to-my-app.msix

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

所以问题仍然存在,即使我可以使用它通过SignTool.exe手动签名,为什么Visual Studio也不接受我的CA颁发的证书作为有效的签名证书?

>

END UPDATE

enter image description here

1 个答案:

答案 0 :(得分:0)

我拥有UWP的这一流程-我怀疑Peter's是正确的,并且您正在进入内部进行的链式验证,并且出于某种原因未通过要求。

由于我们的内部流程与VS反馈相关,因此我将there与您联系。

我为我们创建了一个任务,以便在出于非显而易见的原因拒绝证书时提供更好的错误消息。