【问题标题】:Why can't Windows find the issuer of my certificate?为什么 Windows 找不到我的证书的颁发者?
【发布时间】:2015-11-29 17:33:42
【问题描述】:

我第一次尝试对我的 Windows 应用程序(在 Mac 上使用 Unity 构建)进行代码签名。我已将 osslsigncode 与我的私钥和 Apple 颁发的开发人员证书一起使用(我意识到这很不寻常,但我不明白为什么它不应该工作)。

生成的可执行文件已明确签名,但在用户启动它时仍会引发可怕的“未知发布者”警告。挖掘文件属性会显示一个签名,但会显示“无法验证签名中的证书”。它正确地将发行者列为“US,Apple Inc.,Apple Certification Authority”。但是当我得到证书的详细信息时,它说“Windows 没有足够的信息来验证这个证书。”

现在,此时有“安装证书...”和“颁发者声明”按钮,我怀疑它们会满足它,但我当然不能指望我的最终用户这样做。

那么,这里究竟缺少什么?是否只有某些 CA 可以在没有投诉的情况下工作,如果是,我在哪里可以找到该列表?还是我的应用中缺少其他内容?

注意:如果需要更多详细信息,所有证书对话框的屏幕截图都发布在here

【问题讨论】:

    标签: windows unity3d code-signing digital-certificate


    【解决方案1】:

    它列出了 US、Apple Inc.、Apple 证书颁发机构,这是 CA(证书颁发机构 - 也由证书表示)用于签署证书,或者更好地颁发证书,因为该信息在证书本身中。

    您可以将 CA 视为证书的父级。

    现在,Windows 无法验证您的证书的原因是它不知道证书的父 CA

    要更改这一点,您还必须将父 CA 导入 Windows,如果 CA 也有父 CA,请也导入该 CA,依此类推,直到您到达一个自签名的 CA(它没有父级,或者它自己的父级),那个称为ROOT CA

    以 ROOT CA 开头并以您的证书结尾的 CA 列表称为 证书链。导入整个证书链后,Windows 将不再报错,在“证书”窗口中,选择“证书路径”选项卡,您会看到整个证书链以树状结构的形式出现,以 ROOT CA 开头,并以您的证书结尾(现在它是唯一显示在那里的证书),其中每个证书都列在其父级下方。

    【讨论】:

    • 无需全部导入链上。人们可以在任何时候停下来,只需授予该证书授权。
    • 感谢您的改进。
    • 谢谢,这对理解它的工作原理很有帮助。但是我不能要求我的用户安装一堆证书(或者,可能手动授予一个证书)。那么,Windows 是否默认带有一些经过批准的证书?我在哪里可以找到这些清单?或者,Windows 用户是否已经习惯于不时批准新的 CA?
    • 证书颁发机构本身将能够告诉您他们是否可以为您提供适用于 Windows 的代码签名证书。但您也可以从 Microsoft 下载包含根证书计划成员列表的 PDF。 Search for "root certificate program"..
    • 此时我没有全新安装的 Windows,但我想在 Cert 存储中存在一些受信任的 CA(无论它们是在安装磁盘中,还是通过更新来的)。在经常运行的机器上,证书商店会不断更新,因为某些应用程序(或网站)需要新的证书。我想它在 Mac 上运行顺利,因为默认安装了 Apple CA(我在我的 Niresh Mac 上见过一堆)。这是Ms code sign intro site,它描述了认证过程(可能会很痛苦)。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    相关资源
    最近更新 更多